gpt4 book ai didi

javascript - Google Maps API 与 StoreLocator 和 MarkerClusterer 混合问题

转载 作者:行者123 更新时间:2023-12-02 17:44:15 25 4
gpt4 key购买 nike

http://storelocator.googlecode.com/git/examples/dynamic.html

我使用的动态 StoreLocator 与演示中所示的完全一样,但做了一些调整:

  1. 将 JSON 更改为我自己的。
  2. 使用以下代码将标记聚类器添加到 map :

    google.maps.event.addListener(_googleMap, 'idle', function() {
    if(typeof _merketClusterer == 'object') {
    _googleClusters.clearMarkers();
    }
    _googleClusters = new MarkerClusterer(_googleMap, _storeLocatorView.c);
    });

由于 MarkerClusterer 和 StoreLocator 都依赖于 map 事件,因此似乎簇会显示,然后瞬间,标记会再次从 StoreLocator 中出现。

有人知道如何在 StoreLocator 完成更新 map 后触发 MarkerClusterer 吗?

示例如下:http://jsfiddle.net/Z6WHR/

您需要移动 map 才能开始聚类,并且标记会重新出现。

我对此进行了更深入的研究,并认为我可以通过将 StoreLocator 中的标记函数包装到 Clusterer 中来修复它,但由于它是高度匿名的,所以无法这样做。

最佳答案

我也遇到了这个问题,但我必须以不同的方式解决它。我尝试使用您的代码,但我的性能下降了,因为对于商店定位器中的每个商店,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 - Google Maps API 与 StoreLocator 和 MarkerClusterer 混合问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21907427/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com