Я новичок в API googlemaps. Я написал небольшое приложение для своего мобильного телефона, которое периодически обновляет его местоположение до базы данных SQL.
Я хотел бы отобразить эту информацию в googlemap в моем браузере. В идеале я бы хотел периодически опробовать базу данных, и если появятся новые координаты, добавьте их в строку.
Лучший способ описать это .
В поисках, чтобы добраться туда, я начал работу с документами в Google и менял их, чтобы попытаться добиться того, чего хочу. Это не работает – и я не знаю достаточно, чтобы знать, почему. Я хотел бы получить некоторые советы относительно того, почему, и любые указатели на мою конечную цель будут очень приветствованы. Пример Google AJAX + MySQL / PHP
<script type="text/javascript"> //<![CDATA[ function load() { if (GBrowserIsCompatible()) { var map = new GMap2(document.getElementById("map")); map.addControl(new GSmallMapControl()); map.addControl(new GMapTypeControl()); map.setCenter(new GLatLng(47.614495, -122.341861), 13); GDownloadUrl("phpsqlajax_genxml.php", function(data) { var xml = GXml.parse(data); var line = []; var markers = xml.documentElement.getElementsByTagName("points"); for (var i = 0; i < points.length; i++) { var point = points.item(i); var lat = point.getAttribute("lat"); var lng = point.getAttribute("lng"); var latlng = new GLatLng(lat, lng); line.push(latlng); if (point.firstChild) { var station = point.firstChild.nodeValue; var marker = createMarker(latlng, station); map.addOverlay(marker); } } var polyline = new GPolyline(line, "#ff0000", 3, 1); map.addOverlay(polyline); }); } //]]>
Мой php-файл генерирует следующий XML;
<?xml version="1.0" encoding="UTF-8" ?> <points> <point lng="-122.340141" lat="47.608940"/> <point lng="-122.344391" lat="47.613590"/> <point lng="-122.356445" lat="47.624561"/> <point lng="-122.337654" lat="47.606365"/> <point lng="-122.345673" lat="47.612823"/> <point lng="-122.340363" lat="47.605961"/> <point lng="-122.345467" lat="47.613976"/> <point lng="-122.326584" lat="47.617214"/> <point lng="-122.342834" lat="47.610126"/> </points>
Я успешно справился с этим; http://code.google.com/apis/maps/articles/phpsqlajax.html, прежде чем пытаться настроить код.
Любые указатели? Где я ошибаюсь?
Кажется, вы на правильном пути.
Ваш php-скрипт должен принять параметр timestamp и должен проверить, были ли новые точки вставлены в базу данных после этой метки времени. Если да, он должен вернуть ответ с последней записью (или списком записей после этой отметки времени, если вы хотите показать живой след при движении транспортного средства).
На стороне клиента вы можете инициировать запрос AJAX на серверный сценарий, используя обычный или длительный опрос , с параметром timestamp последнего обновления.
Когда ваш запрос AJAX получает новую информацию с сервера, вы просто перемещаете маркеры на карту. Затем инициируйте новый запрос AJAX с обновленным параметром timestamp paramater.
Пример псевдокода с использованием jQuery :
var lastUpdate = '2000/01/01 00:00:00'; function autoUpdate () { $.ajax({ type: "GET", url: "phpsqlajax_genxml.php?last_update=" + lastUpdate, dataType: 'xml', success: function(xmlData) { // 1. Check if the xmlData is empty. If not we received // some fresh data. // 2. Update lastUpdate from the xmlData with the timestamp from // the server. Don't use JavaScript to update the timestamp, // because the time on the client and on the server will // never be exactly in sync. // 3. Move the markers on Google Map. // Relaunch the autoUpdate() function in 5 seconds. setTimeout(autoUpdate, 5000); } }); }