2012-03-16 41 views
2

我需要從json文件中獲取新的位置,這將在regualr間隔更新,以便在地圖上更新它,而無需重複加載整個頁面。我怎樣才能做到不使用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? – 2012-03-16 13:21:30

+0

不一定,如果它有效,它將是完美的 – Fish123 2012-03-16 13:36:17

+0

您使用的是Google Maps API V2,您應該升級到V3,因爲V2已被棄用,並且保留一年的保質期。 – 2012-03-19 07:34:47

回答

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); 
    }); 
}