Google maps 标记聚类器未显示在地图上
嗨,我尝试将markerclusterer添加到我的谷歌地图中,但我确实错过了一些东西,因为标记在地图上,但我看不到群集 这是我的剧本: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
//<![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,但仍然没有群集!