http://storelocator.googlecode.com/git/examples/dynamic.html
我使用的是与演示中完全相同的动态StoreLocator,但进行了一些调整:
将JSON更改为我自己的。
使用以下代码将Marker Clusterer添加到地图:
google.maps.event.addListener(_googleMap, 'idle', function() {
if(typeof _merketClusterer == 'object') {
_googleClusters.clearMarkers();
}
_googleClusters = new MarkerClusterer(_googleMap, _storeLocatorView.c);
});
因为MarkerClusterer和StoreLocator都依赖于地图事件,所以看来集群显示了,并且一瞬间之后,标记又从StoreLocator中出现。
任何人都知道在StoreLocator完成地图更新后如何触发MarkerClusterer吗?
此处的示例:http://jsfiddle.net/Z6WHR/
您需要移动地图以开始聚类,并且标记会向后显示。
我对此进行了更深入的研究,并认为我可以通过将StoreLocator中的标记功能包装到集群器中来修复它,但由于高度匿名而无法这样做。
最佳答案
我也遇到了这个问题,但是我不得不以不同的方式解决它。我尝试使用您的代码,但性能下降,因为对于商店定位器中的每个商店,MarkerCusterer都会清除标记,然后再次添加它们。
因此,我对您的代码进行了一些更改,现在可以正常使用了!
google.maps.event.addListenerOnce(map, 'bounds_changed', function() {
googleClusters = new MarkerClusterer(map);
view.addStoreToMapB = view.addStoreToMap;
var i = 0;
view.addStoreToMap = function (a) {
i++;
var b = view.addStoreToMapB(a);
if(i == view.stores.length){
i = 0;
var markers = [];
googleClusters.clearMarkers();
for(marker in view.markerCache_){
markers.push(view.markerCache_[marker]);
}
googleClusters.addMarkers(markers);
}
}
});
关于javascript - 带有StoreLocator和MarkerClusterer混合的Google Maps API,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21907427/