ramen79 Ответов: 1

Как обновить местоположение на карте и переместить маркер в обновленное местоположение


Я могу создавать и отображать карту с данными о местоположении(lat,long) из базы данных.
"setInterval" используется, но карта и маркер не меняются.
Мне нужно отслеживать GPS-устройство с обновленным lat,длинным из базы данных.
при чтении новых данных(lat,long) из базы данных маркер должен анимироваться в новом месте.
цель кода - показать положение GPS-устройства на карте в реальном времени.

Я помещаю свой нынешний код ниже..

пожалуйста,помогите мне, кто угодно.

Спасибо.

Что я уже пробовал:

var map;
           var marker;

           function LoadMap()
           {
                <?php include 'latlongmap.php';?>
                SetMap(fetchedlatlong);
           }


           function SetMap(latlong)
           {
              map = L.map('map').setView(latlong, 12);

              mapLink = 'OpenStreetMap';
              L.tileLayer(
           'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
           attribution: 'Map data © ' + mapLink,
           maxZoom: 18,
           }).addTo(map);
               marker = L.marker(latlong).addTo(map);
               layer.bindPopup('LatLng: ' + layer.getLatLng()).openPopup();
           }



           setInterval(LoadMap,5000);

1 Ответов

Рейтинг:
2

Richard Deeming

Цитата:
function LoadMap()
{
    <?php include 'latlongmap.php';?>
    SetMap(fetchedlatlong);
}

Этот код будет отображать выходные данные latlongmap.php файл ОДНАЖДЫ, когда страница запрашивается в первый раз. Этот вывод не изменится, пока вы не перезагрузите страницу.

Если вы хотите загрузить данные с сервера без перезагрузки страницы, то вам нужно сделать AJAX-запрос.
Начало работы - руководства для разработчиков | MDN[^]
извлечение документации[^]


ramen79

Спасибо Ричарду за ваш ответ.
Я пробовал с ajax, он опрашивает latlon из mysql каждые 5 секунд, как я установил(я проверил с помощью alert), Но пока не повезло, положение слоя карты/маркера не обновляется..

Ниже приведен код, который я пробовал...

функция fetchdata(){
$.Аякс({
URL-адрес: 'getLatLong.php',
тип: "почта",
тип данных: 'json',
успех: функция(ответ){
// Выполнить операцию с возвращаемым значением
// alert(ответ);
var latlon = ответ
//оповещения(latlon)
//setMap(latlon)
var myMap = setTimeout(setMap,3000)
функция setMap(){
var map = new L. map('map' , {center: latlon,
масштаб: 14})
// Создание объекта слоя
слой var = новая л. TileLayer (с HTTP://{ов}.tile.openstreetmap.org/{З}/{х}/{г}.в формате PNG')
// Добавление слоя на карту
map.addLayer(слой)
var marker = L. marker(латлон).addTo(карта)
слой.bindPopup('latlng с:' + слой.getLatLng()).openPopup()
}

},
завершите:функция(данные){
setTimeout(fetchdata,5000);
}
});
}


$(документ).готово(функция(){
setInterval(fetchdata,5000);