Автоматическое обновление маркеров Google Map.
Эй там, я следую этому учебнику:
https://developers.google.com/kml/articles/phpmysqlkml[^]
он прекрасно работает. Я читаю данные из базы данных, генерирую XML-файл и накладываю его на google maps.
Код точно такой же, как в учебнике. проблема теперь в том, что я автоматически обновляю html-страницу, которая вызывает php-страницу. php-скрипт генерирует XML-файл. Я использую мета-заголовок для автоматического обновления html-страницы. крайне неприятно видеть, как вся страница перезагружается каждые 5 секунд. Мне требуется обновление, поскольку я создаю удаленный регистратор, который имеет динамические возможности.
Я хотел бы просто обновить маркеры. и не страница. Код html-файла приведен ниже. пожалуйста, помогите срочно. спасибо
<!DOCTYPE html > <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> <title>Drifter</title> <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> //<![CDATA[ setTimeout(function () { window.location.reload(); }, 5000); var customIcons = { blue: { icon: 'http://labs.google.com/ridefinder/images/mm_20_blue.png', shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' }, red: { icon: 'http://labs.google.com/ridefinder/images/mm_20_red.png', shadow: 'http://labs.google.com/ridefinder/images/mm_20_shadow.png' } }; function load() { var map = new google.maps.Map(document.getElementById("map"), { center: new google.maps.LatLng(-29.86519774,30.98538962), zoom: 18, mapTypeId: 'terrain' }); var infoWindow = new google.maps.InfoWindow; // Change this depending on the name of your PHP file downloadUrl("genxml.php", function(data) { var xml = data.responseXML; var markers = xml.documentElement.getElementsByTagName("marker"); for (var i = 0; i < markers.length; i++) { var point = new google.maps.LatLng( parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lon"))); var icon = customIcons["blue"] || {}; var marker = new google.maps.Marker({ map: map, position: point, icon: icon.icon, shadow: icon.shadow }); bindInfoWindow(marker, map, infoWindow); } }); } function bindInfoWindow(marker, map, infoWindow) { google.maps.event.addListener(marker, 'click', function() { infoWindow.open(map, marker); }); } function downloadUrl(url, callback) { var request = window.ActiveXObject ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest; request.onreadystatechange = function() { if (request.readyState == 4) { request. önreadystatechange = doNothing; callback(request, request.status); } }; request.open('GET', url, true); request.send(null); } function doNothing() {} // </script> </head> <body onload="load()"> <div id="map" style="width: 1000px; height: 600px"></div> </body> </html>
спасибо