...取决于我放线的位置
var mc = new markerclusterer(map);
如果它出现在示例似乎建议的地方 - 在“var map”引入之后 - 所有标记都消失了(例如运行here)。
没有mc变量的版本会运行,所有标记都可见。
当在google.maps.event.addListener函数之后引入mc变量时显示here,它似乎也取消了它的效果并显示了标记。
locations变量是一个数组,包含地理定位数据和格式化的HTML(在电子表格中生成),用于地图上的所有点,并传递给标记以放置它们。
我认为问题可能是要与markerclusterer一起使用,数组是指地理位置数据,它应该引用标记?我见过其他人使用变量markerarray,但我担心如果我搞乱它我将打破代码的html和地理位置提取部分。
任何人都可以帮忙解释为什么var mc失败了吗?我在标头中加载了http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js,因此它应该可以正常工作,我在代码中看不到任何语法错误。
这是我用JS做的第一件事,它很棒,但我现在只想用标记簇来完成它!非常感谢帮助。
编辑:我也试过玩this,但就像我说这里的数组是我的理解的两倍,所以我无法让它工作:
建议:
...
var infowindow = new google.maps.InfoWindow();
var marker, i;
map.markers = []; // ADD THIS LINE
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
});
map.markers.push(marker); // ADD THIS LINE
...
我的代码片段:
...
var infowindow = new google.maps.InfoWindow();
var marker, i;
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
});
...
答案 0 :(得分:4)
你有两个问题。
您永远不会将标记添加到MarkerClusterer
var markers=[];
for (var i = 0; i < locations.length; i++) {
var marker = new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map
});
google.maps.event.addListener(marker, 'click', (function(marker, i) {
return function() {
infowindow.setContent(locations[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
markers.push(marker);
}
var mc = new MarkerClusterer(map, markers);
markerclusterer的大小写不正确(javascript区分大小写),应该是MarkerClusterer。
答案 1 :(得分:1)
markerclusterer不是正确的套管。
对象是“MarkerClusterer” JavaScript区分大小写!
样本看起来与您的代码略有不同:
markerClusterer = new MarkerClusterer(map, markers, {
maxZoom: zoom,
gridSize: size,
styles: styles[style]
});
例如