2011-12-22 169 views
2

我在Google地圖標記羣集中遇到問題。我使用的是API v3,但由於某些原因,我無法弄清楚,我無法應用標記聚類。我會很感激任何幫助和建議。Google地圖標記羣集

應用標記功能是作爲與羣集代碼一起如下:

function setupOfficeMarkers() { 
    mgr.clearMarkers(); 
    mgr.refresh(); 
    allmarkers.length = 0; 
    document.getElementById('zomlevel').value = map.getZoom(); 
    document.getElementById('boundsmap').value = map.getCenter(); 
    // mapbound = map.getBounds(); 
    mapbound=new google.maps.LatLngBounds(); 

    for (var i in officeLayer) { 
     if (officeLayer.hasOwnProperty(i)) { 
      var layer = officeLayer[i]; 
      var markers = []; 

      for (var j in layer["places"]) { 
       if (layer["places"].hasOwnProperty(j)) { 
        if(map.getZoom()>=layer["zoom"][0] && map.getZoom()<=layer["zoom"][1]){ 
        //displaying home icon on places starts here 
        var place = layer["places"][j]; 
         if(place["icon"]){ 
          if(place["icon"][0]){ 
           if(place["icon"][0] == 'own'){ 
           }else{ 
            var icon = getIcon(place["icon"]); 
            } 
          }else{ 
          var icon = getIcon(place["icon"]); 
           } 
         }else{ 
          var icon = getIcon(place["icon"]); 
          } 
      //displaying home icon on places ends here 
      var title = place["name"]; 
      //alert(title); 

      var posn = new google.maps.LatLng(place["posn"][0], place["posn"][1]); 
      mapbound.extend(posn); 

      if(map.getBounds().contains(posn)){ 
       if(place["icon"][0] == 'own'){ 
        var imageUrl = place["icon"][1]; 
        var markerImage = new google.maps.MarkerImage(imageUrl, new google.maps.Size(66, 65)); 
        var marker = new google.maps.Marker({ 
         position: posn, 
         draggable: false, 
         icon: markerImage 
        }); 
         markers.push(50); 
         //alert(markers.length); 
       }else{ 
        var marker = createMarker(posn, title, getIcon(place["icon"])); 
       } 

        mgr.addMarker(marker, layer["zoom"][0], layer["zoom"][1]); 
        attachSecretMessageAjax(marker, place["name"],map); 
        //attachSecretMessage(marker, '<h2>'+place["name"]+'</h2>',map); 
       } 
       //allmarkers.push(marker); 
      } 
     } 
     } 
     //mgr.addMarkers(markers, layer["zoom"][0], layer["zoom"][1]); 

    }alert(markers.length+"OUTSIDE"); 
    var markerCluster = new MarkerClusterer(map, markers); 
    } 
//alert(markers.length+"OUTSIDE"); 

    mgr.refresh(); 
    updateStatus(mgr.getMarkerCount(map.getZoom())); 
} 

回答

0

我不知道,但我想你應該叫

markers.push(marker); 

,而不是

markers.push(50); 

因爲MarkerClusterer需要(1)地圖和(2)標記數組。我希望這有幫助。相反,您可以先打電話給Marker Clusterer,然後致電

markerCluster.addMarker(marker); 

對於每個標記。