2012-03-16 6 views
2

Мне нужно получить новую позицию из json-файла, которая будет обновляться с регулярными интервалами, чтобы обновить ее на карте, не перезагружая всю страницу повторно. Как я могу сделать без использования AjaxОбновление маркера в реальном времени

    if (GBrowserIsCompatible()) { 
       //==add controls 
       var map = new GMap(document.getElementById("map")); 
       map.addControl(new GLargeMapControl()); 
       map.addControl(new GMapTypeControl()); 
       map.setCenter(new GLatLng(-29.870879, 30.977258),15); 

       var htmls = []; 
       var i = 0; 

       //create marker and set up infoWindow 
       function createMarker(point,ID,name) { 
       var marker = new GMarker(point); 
       GEvent.addListener(marker, "click", function() { 
       marker.openInfoWindowHtml(ID+"<br/>Name: " +name); 

       }); 

        return marker; 
       } 



      process_Data = function(doc) { 
       //parse json file 
       var jsonData = eval('(' + doc + ')'); 

       // ======== Plots the markers on Google Maps============ 

        for (var i=0; i<jsonData.markers.length; i++) { 
         var point = new GLatLng(jsonData.markers[i].lat, jsonData.markers[i].lng); 
         var marker = createMarker(point,jsonData.markers[i].ID,jsonData.markers[i].name); 
         map.addOverlay(marker); 

         } 
        } 

         GDownloadUrl("points.json", process_Data); 

         } 
+0

Есть ли причина, почему вы не хотите использовать AJAX? –

+0

Не обязательно, если он будет работать, это будет отлично – Fish123

+0

Вы используете API Карт Google V2, вы должны перейти на V3, поскольку V2 устарел и у него осталось чуть больше года гарантированной жизни. –

ответ

7
var marker; 

// every 10 seconds 
setInterval(updateMarker,10000); 

function updateMarker() { 
    $.post('/path/to/server/getPosition',{}, function(json) { 
     var LatLng = new google.maps.LatLng(json.latitude, json.longitude); 
     marker.setPosition(LatLng); 
    }); 
} 
Смежные вопросы