繁体   English   中英

带有StoreLocator和MarkerClusterer混合问题的Google Maps API

[英]Google Maps API with StoreLocator and MarkerClusterer mixing issue

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

我正在使用动态StoreLocator完全按照演示中的介绍进行一些调整:

  1. 将JSON更改为我自己的。
  2. 使用以下代码将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包装到也推入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);
            }
        }
    });

管理以识别StoreLocator用于将标记添加到地图并将MarkerClusterer代码环绕的关键功能。 遗憾的是,如果不稍微更改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);
  }
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM