我的 MarkerCluster 有问题。
当我是 400 个标记时,出现集群,一切正常。但现在我有超过 600 个标记,并且没有出现集群。
Firebug 显示此错误:
that.map_.mapTypes[that.map_.getMapTypeId()] is undefined markerclusterer.js:304
你有想法吗?
谢谢
我的 MarkerCluster 有问题。
当我是 400 个标记时,出现集群,一切正常。但现在我有超过 600 个标记,并且没有出现集群。
Firebug 显示此错误:
that.map_.mapTypes[that.map_.getMapTypeId()] is undefined markerclusterer.js:304
你有想法吗?
谢谢
Update your markercluster.js to the latest revision: http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/src/markerclusterer.js
and your problem will be solved!
最好的解决方案是切换到 api 3.5 等待谷歌修复。
<script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3.5&sensor=true"></script>
谷歌似乎在 api 中改变了一些东西。您可以在集群选项或地图选项中手动将 maxZoom 值设置为 16 之类的值,然后它会再次起作用。如果您有其他图层,例如 Bing 或 OSM,您也必须设置它们的 maxZoom 值。
var clusterOptions = { styles: ClusterStyles, maxZoom: 16 };
markerClusterer = new MarkerClusterer(map, markersArray, clusterOptions);
我以相同的方式修复了它,但略有不同.. 更新代码的最佳方式.. 此代码将属性扩充到预期的位置。
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();
}
});
我认为 maps api 已更改并且 mapsTypes 数组没有 maxZoom 属性
是的,醒来我的也坏了。
这里的评论有效,我在初始化中添加了 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
});
在第 156 行的 markerclusterer.js 中,将代码从
var maxZoom = that.map_.mapTypes[that.map_.getMapTypeId()].maxZoom;
至var maxZoom = 18;
在集群上“单击”后出现相同的错误消息。
解决方案:
使用具体版本的谷歌地图,而不是最新版本(例如http://maps.google.com/maps/api/js?v=3.5&sensor=true)
更改标记聚类器 js - 设置固定的 maxZoom