ClusterMarkerer - 没有出现集群 - this.map_.mapTypes [this.map_.getMapTypeId()]未定义markerclusterer.js:304

时间:2011-09-20 08:31:56

标签: google-maps-api-3 google-maps-markers markerclusterer

我的MarkerClusterer存在问题。

当我有400个标记时,群集出现,全部工作。 但是现在我有超过600个标记,并且没有出现聚类。

Firebug显示此错误:

that.map_.mapTypes[that.map_.getMapTypeId()] is undefined  markerclusterer.js:304

有你的想法吗?

由于

8 个答案:

答案 0 :(得分:3)

将markercluster.js更新为最新版本: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js

你的问题将会解决!

答案 1 :(得分:2)

最好的解决方案是切换到api 3.5等待谷歌修复 <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.5&sensor=true"></script>

答案 2 :(得分:1)

似乎谷歌在api中改变了一些东西。 您可以手动将群集选项或地图选项中的maxZoom值设置为16,然后再次使用。 如果你有像Bing oder OSM这样的其他层,你也必须设置它们的maxZoom值。

var clusterOptions = { styles: ClusterStyles, maxZoom: 16 };
markerClusterer = new MarkerClusterer(map, markersArray, clusterOptions);

答案 3 :(得分:0)

我认为地图api已更改且mapsTypes数组没有maxZoom属性

答案 4 :(得分:0)

是的,醒来也是我的破碎了。

此处的评论有效,我在初始化时添加了maxZoom:18。

     footer_map = new google.maps.Map(document.getElementById('footer_map'), {
      zoom: 1,
      center: new google.maps.LatLng(42, 0),
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      zoomOnClick: true,
      maxZoom: 18
    });

答案 5 :(得分:0)

在第156行的markerclusterer.js中更改代码

var maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom;

var maxZoom = 18;

答案 6 :(得分:0)

群集上的“点击”后出现相同的错误消息。

解决方案:

答案 7 :(得分:0)

我以相同的方式修改了它,但略有不同。更新代码的最佳方式..此代码将属性扩展回预期的位置。

    var that = this;
    google.maps.event.addListener(this.map_, 'zoom_changed', function() {
        try{
           var maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom;
        } catch(Error){ maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom = 20; }
        var zoom = that.map_.getZoom();
        if (zoom < 0 || zoom > maxZoom) return;     

        if (that.prevZoom_ != zoom) {
           that.prevZoom_ = that.map_.getZoom();
           that.resetViewport();
        }
});