Javascript 谷歌地图API与StoreLocator和MarkerClusterer的混合问题
我使用的dynamic StoreLocator与演示中所示的完全相同,只是做了一些调整:Javascript 谷歌地图API与StoreLocator和MarkerClusterer的混合问题,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我使用的dynamic StoreLocator与演示中所示的完全相同,只是做了一些调整: 将JSON更改为我自己的 在地图中添加了标记聚类器,代码如下: google.maps.event.addListener(_googleMap, 'idle', function() { if(typeof _merketClusterer == 'object') { _googleClusters.clearMarkers(); } _googleClusters = new M
google.maps.event.addListener(_googleMap, 'idle', function() {
if(typeof _merketClusterer == 'object') {
_googleClusters.clearMarkers();
}
_googleClusters = new MarkerClusterer(_googleMap, _storeLocatorView.c);
});
我在深入研究这一点,并认为可以通过将StoreLocator中的marker函数包装到Clusterer中来修复它,但由于高度匿名,无法进行此操作。成功识别StoreLocator用于将标记添加到地图中的关键功能,并将标记聚类器代码包裹在其周围。 不幸的是,如果不稍微更改StoreLocator,就不可能添加每个单独的标记并避免清除和重置所有内容。 但是向addStoreToMap添加一个简单的返回,以便返回可以实现的标记
google.maps.event.addListenerOnce(_googleMap, 'bounds_changed', function() {
_googleClusters = new MarkerClusterer(_googleMap);
_googleView.addStoreToMapB = _googleView.addStoreToMap
_googleView.addStoreToMap = function (a) {
var b = _googleView.addStoreToMapB(a);
_googleClusters.clearMarkers();
_googleClusters.addMarkers(_googleView.c);
}
});
我也遇到了这个问题,但我必须以不同的方式解决它。我试图使用您的代码,但我的性能下降,因为对于商店定位器中的每个商店,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);
}
}
});
您可以提供完整的代码、显示问题的JSFIDLE或指向显示问题的页面的链接吗?添加了问题的链接。