2013-02-12 69 views
0

如何按時間間隔移除舊標記並自動將其替換爲新標記。我正在使用谷歌地圖創建一個真正的跟蹤器。 `加載新標記並刪除舊標記。 [複製]

var markersArray = []; 

function initialize() { 

var myLatlng = new google.maps.LatLng(39, -86); 
var map = new google.maps.Map(document.getElementById('googleMap'), { 
    zoom: 1, 
    center: myLatlng, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 

$(function() { 
    $(document).ready(function(){ 
     setInterval(function(){ 
       $.ajax({          
       url: 'real.php',     //the script to call to get data   
       //data: "",      
       dataType: 'json',    //data format  
       success: function(data){   //on recieve of reply       


var locations = data; 

var infowindow = new google.maps.InfoWindow(); 
var marker, i; 
deleteOverlays(); 
for (i = 0; i < locations.length; i++) { 

    marker = new google.maps.Marker({ 
    position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
    map: map 
    }); 
markersArray.push(marker); 


    google.maps.event.addListener(marker, 'click', (function(marker, i) { 
    return function() { 
     infowindow.setContent(locations[i][0]); 
     infowindow.open(map, marker); 
    } 
    })(marker, i)); 
} 


       } 
      }); 
     }, 1000); 

    }); 
}); 
} 
initialize(); 

如何刪除已使用clearOverlays的標記,但地圖中未顯示標記。謝謝。

+0

可能重複[當使用setinterval谷歌地圖v3調用函數時重複標記(http://stackoverflow.com/questions/13054782/duplicated-markers-when-calling-a-function-using-setinterval-google-maps-v3) – geocodezip 2013-02-12 15:19:01

回答

1

要刪除標記,你需要設置其映射爲null:

for (var ii = 0; ii < markers.length; ii++) { 
    markers[ii].setMap(null); 
} 

,或者根據您的情況,你可以只更新標記的位置:

marker.setPosition(newLatLng);