Google Maps MarkerClusterer无法使用或隐藏所有标记

时间:2013-09-22 15:12:51

标签: javascript google-maps google-maps-api-3

...取决于我放线的位置

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
      });
...

2 个答案:

答案 0 :(得分:4)

你有两个问题。

  1. 您永远不会将标记添加到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);
    
  2. markerclusterer的大小写不正确(javascript区分大小写),应该是MarkerClusterer。

  3. working example

答案 1 :(得分:1)

markerclusterer不是正确的套管。

对象是“MarkerClusterer” JavaScript区分大小写!

样本看起来与您的代码略有不同:

markerClusterer = new MarkerClusterer(map, markers, {
      maxZoom: zoom,
      gridSize: size,
      styles: styles[style]
    });

例如