Google maps 标记聚类器未显示在地图上

Google maps 标记聚类器未显示在地图上,google-maps,markerclusterer,Google Maps,Markerclusterer,嗨,我尝试将markerclusterer添加到我的谷歌地图中,但我确实错过了一些东西,因为标记在地图上,但我看不到群集 这是我的剧本: //<![CDATA[ function initialize() { var cluster = []; var map = new google.maps.Map(document.getElementById("map_canvas"), { center: new google.maps.LatLng(<?php ec

嗨,我尝试将markerclusterer添加到我的谷歌地图中,但我确实错过了一些东西,因为标记在地图上,但我看不到群集

这是我的剧本:

//<![CDATA[

  function initialize() {
  var cluster = [];
  var map = new google.maps.Map(document.getElementById("map_canvas"), {
    center: new google.maps.LatLng(<?php echo get_post_meta($find_CODGEO, 'latitude', true); ?>, <?php echo get_post_meta($find_CODGEO, 'longitude', true); ?>),
    zoom: 14,
    mapTypeId: 'roadmap'
  });
  var mcOptions = {gridSize: 10, maxZoom: 15};

  var infoWindow = new google.maps.InfoWindow;

  downloadUrl("/wp-content/themes/codium-extend/search/search_equipements.php?lat=<?php echo get_post_meta($find_CODGEO, 'latitude', true); ?>&lng=<?php echo get_post_meta($find_CODGEO, 'longitude', true); ?>&type=<?php echo $thematiquematch ; ?>&codgeo=<?php echo $CODGEO ; ?>&radius=50", function(data) {
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
      var name = markers[i].getAttribute("name");
      var address = markers[i].getAttribute("sous_type");
      var type = markers[i].getAttribute("sous_type_img");
      var offsetLat = markers[i].getAttribute("lat");
      var offsetLng = markers[i].getAttribute("lng");
      var point = new google.maps.LatLng(offsetLat, offsetLng);
      var html = "<b>" + name + "</b> <br/>" + address;
      var icon = 'http://images.commune-mairie.fr/maps/' + type + '.png';
      var marker = new google.maps.Marker({
        map: map,
        position: point,
        icon: 'http://images.commune-mairie.fr/maps/' + type + '.png',
        shadow: icon.shadow
      });
      bindInfoWindow(marker, map, infoWindow, html);

      google.maps.event.addListener(marker, 'click', (function(marker, i) {
                    return function() {
                        infowindow.setContent(markers[i].getAttribute("name"));
                        infowindow.open(map, marker);
                    }
                })(marker, i));
      cluster.push(marker);
    }
    var mc = new MarkerClusterer(map,cluster,mcOptions);


  });

}

function bindInfoWindow(marker, map, infoWindow, html) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
  });
}

function downloadUrl(url, callback) {
  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request, request.status);
    }
  };

  request.open('GET', url, true);
  request.send(null);
}

function doNothing() {}


//]]>
/,),
缩放:14,
mapTypeId:“路线图”
});
var mcOptions={gridSize:10,maxZoom:15};
var infoWindow=new google.maps.infoWindow;
下载URL(“/wp content/themes/codium extend/search/search_equipments.php?lat=&lng=&type=&codgeo=&radius=50”,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址;
var图标http://images.commune-mairie.fr/maps/“+type+”.png';
var marker=new google.maps.marker({
地图:地图,
位置:点,,
图标:'http://images.commune-mairie.fr/maps/“+type+”.png”,
阴影:icon.shadow
});
bindInfoWindow(标记、地图、infoWindow、html);
google.maps.event.addListener(标记,'click',(函数(标记,i){
返回函数(){
setContent(标记[i].getAttribute(“名称”);
信息窗口。打开(地图、标记);
}
})(marker,i));
簇.推(标记);
}
var mc=新的MarkerClusterer(映射、集群、mcOptions);
});
}
函数bindInfoWindow(标记、地图、infoWindow、html){
google.maps.event.addListener(标记'click',函数(){
setContent(html);
信息窗口。打开(地图、标记);
});
}
函数下载url(url,回调){
var请求=window.ActiveXObject?
新的ActiveXObject('Microsoft.XMLHTTP'):
新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
打开('GET',url,true);
请求发送(空);
}
函数doNothing(){}
//]]>

这里有一个活生生的例子,谢谢你的帮助

您可以在循环中执行此操作:

bindInfoWindow(marker, map, infoWindow, html);

          google.maps.event.addListener(marker, 'click', (function(marker, i) {
                        return function() {
                            infowindow.setContent(markers[i].getAttribute("name"));
                            infowindow.open(map, marker);
                        }
                    })(marker, i));
但是您的bindInfoWindow函数如下所示:

 function bindInfoWindow(marker, map, infoWindow, html) {
      google.maps.event.addListener(marker, 'click', function() {
        infoWindow.setContent(html);
        infoWindow.open(map, marker);
      });
    }

因此,您正在复制标记单击事件侦听器。我不确定这是否会导致MarkerClusterer出现问题,但无论如何你都应该整理一下。

你页面上的代码没有提到我能看到的MarkerClusterer。你的问题中的代码中也有很多JS错误(尝试使用JSLint来识别它们)对不起,我忘了清理缓存(我刚刚做了)。你现在可以检查一下,你会看到这个映射的实时版本(没有集群…)我看到很多集群。在我看来,它们中可能有重复的标记。嗨,geocodezip,我将尝试清理XML文件,可能重复的标记是群集不显示的原因…事实上,我删除了第一个addListener,但仍然没有群集!