2012-04-03 55 views
1

我正在使用Google Maps API V3在地圖上放置一些標記。由於有多個標記具有相同的LatLng,因此可能會有重疊的標記,因此我嘗試使用setMap(null)setVisible(false)刪除除第一個以外的所有重疊標記。setVisible(false)刪除標記,但不刪除setMap(null)

問題:當標記上使用setMap(null)時,該函數似乎無法執行任何操作,標記仍保留在地圖上。但是,如果使用setVisible(false),標記確實消失。

任何想法爲什麼會發生這種情況?

我也注意到,所使用的標記聚類器插件做了統計所有重複的標記,已經setVisible(false)setMap(null)

JS代碼

$.getJSON(getJSON_url, 
    { 
     someValues: someValues 
    }, 
    function(json){ 

     for(i = 0; i < json.length; i++) { 

      // Check if marker already exist at that LatLng 
      var duplicate_marker = 0; 
      for(var j = 0; j < markers.length; j++) { 
       // If marker exists 
       if(json[i].lat == markers[j].getPosition().lat() && json[i].lng == markers[j].getPosition().lng()) { 
        console.log(json[i].lat + ' ' + json[i].lng + ' ' + i + ' ' + markers[j].getPosition().lat() + ' ' + markers[j].getPosition().lng() + ' ' + j); 
        duplicate_marker = 1; 
        break; 
       } 
      } 

      // Place markers on map 
      var latLng = new google.maps.LatLng(json[i].lat, json[i].lng); 
      var marker = new google.maps.Marker({ 
       position: latLng, 
       icon: base_url + 'images/template/markers/listing.png', 
       map: map 
      }); 
      markers.push(marker); 

      // Make duplicate marker invisible 
      if(duplicate_marker) { 
       //marker.setMap(null); 
       marker.setVisible(false); 
      } 
+0

爲什麼不創建重複標記?或者至少在沒有'map'參數的情況下創建標記,並在檢查後設置它? – hamczu 2012-04-03 10:58:32

回答

1

你提到使用聚類器的。 clusterer通過調用setMap來顯示和隱藏各個標記,所以它可能會覆蓋你對setMap(null)的調用。但是,由於它尊重setVisible,使它們不會出現。要麼刪除羣集中的重複標記,要麼根本不創建它們