Выборка данных из базы данных каждые пять секунд на Google Map - PullRequest
0 голосов
/ 17 ноября 2011

Я занимаюсь разработкой приложения для карт Google, широты и долготы поступают с внешнего устройства и сохраняются в базе данных каждые пять секунд.

Таким образом, я должен запрашивать базу данных каждые пять секунд и получать новую широту и долготу базы данных и перемещать маркер в соответствии с этим.

Как это можно сделать? Хорошо ли писать ajax call?

Ответы [ 2 ]

0 голосов
/ 17 ноября 2011

Я буду направлять вас в правильном направлении. Я думаю, я мог бы сделать это по крайней мере:

a) У вас может быть функция, которая через определенные промежутки времени запрашивает ваш сервер, используя ajax (проверьте библиотеку, например, jquery), а в функции обратного вызова функции обрабатывает ответ.

b) ваш сервер отправит ответ серверу. В идеале это будет ответ json вида

{
 id:<>,
 lat:
 lng:
}

в) пройдитесь по google maps api , чтобы увидеть, как вы можете удалять маркеры и т. Д. Вы, вероятно, можете поддерживать хэш маркеров в ассоциативном массиве, таком как маркеры [ключ], где ключ будет идентификатором маркера. , если и когда маркер обновится, вы можете использовать этот ассоциативный массив для удаления маркера как:

markers[id].setMap(null);

Код для добавления маркеров в обратном вызове:

var options = {
            position:  new google.maps.LatLng(lat, lng);,
            icon: image,
            zIndex: zIndex,

        };
options.map=map;
var marker = new google.maps.Marker(options); //construct marker
markers[key] = marker;   //store the marker in array
0 голосов
/ 17 ноября 2011

Вот пример, который извлекает данные каждые несколько секунд и перераспределяет маркеры: http://www.robotwoods.com/dev/so_septa.html

вот PHP, который он вызывает:

<?php
$route=(isset($_REQUEST['route']))?$_REQUEST['route']:23;
echo file_get_contents("http://www3.septa.org/transitview/bus_route_data/".$route);
?>
...