...取决于我把线放在哪里
var mc = new markerclusterer(map);
如果它去到示例似乎暗示的地方 - 在引入“var map”之后 - 所有标记都会消失(示例运行here https://c9.io/lmmx/molmachmap/workspace/mappage.1.html).
没有 mc 变量的版本运行时所有标记都可见。
当在 google.maps.event.addListener 函数之后引入 mc 变量时,如图所示here https://c9.io/lmmx/molmachmap/workspace/mappage.2.html,它似乎也取消了它的效果并显示了标记。
Locations 变量是一个数组,其中包含地图上所有点的地理位置数据和准备好格式的 HTML(在电子表格中生成),该数组将传递给标记以放置它们。
我认为问题可能在于,与markerclusterer一起使用时,数组引用地理位置数据,何时应该引用标记?我见过其他人使用变量标记数组,但我担心如果我弄乱它,我会破坏代码的 html 和地理位置提取部分。
任何人都可以帮助解释为什么 var mc 失败吗?我已经加载了http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js在标题中,所以它应该可以工作,并且我在代码中看不到任何语法错误。
这是我用 JS 做的第一件事,它很棒,但我现在只想用标记簇来完成它!非常感谢您的帮助。
EDIT:我也尝试过玩this https://stackoverflow.com/questions/9156909/map-markers-is-undefined-google-map-api-v3但就像我说的,根据我的理解,这里的数组有两倍,所以我无法让它工作:
建议:
...
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
});
...