所以我有一个包含带有(几百个)标记的地图的应用程序。我使用Google提供的markerclusterer.js来聚类我的标记,让整个事情更容易看。我正在使用API V3。
我对所有这一切都很好。但我想要做的是当markerclusterer完成聚类所有标记时执行一些操作。我试过自己做但不看。
有什么建议吗? (我假设这比我想象的要容易,我的脑子只是油炸了)
答案 0 :(得分:5)
我只是想知道同样的事情。我就这样做了:
google.maps.event.addListener(markerClusterer, 'clusteringend', myFunction);
答案 1 :(得分:1)
地图"idle"活动会对您有用吗?它应该在MarkerClusterer完成后触发(假设您在页面加载时加载MarkerClusterer)。
答案 2 :(得分:0)
似乎未维护该库。多年来,它无法与v3正常工作,并且尚未开发解决方案。
因此,我下载了非最小版本,并将其放入正在工作的项目的源代码中。如果您直接在库中进行以下更改,则接受的解决方案仅适用于(对于v3):
在for循环后找到createClusters_函数添加google.maps.event.trigger(this, "clusteringend", this);
。因此如下所示:
MarkerClusterer.prototype.createClusters_ = function() {
if (!this.ready_) {
return;
}
// Get our current map view bounds.
// Create a new bounds object so we don't affect the map.
var mapBounds = new google.maps.LatLngBounds(this.map_.getBounds().getSouthWest(),
this.map_.getBounds().getNorthEast());
var bounds = this.getExtendedBounds(mapBounds);
for (var i = 0, marker; marker = this.markers_[i]; i++) {
if (!marker.isAdded && this.isMarkerInBounds_(marker, bounds)) {
this.addToClosestCluster_(marker);
}
}
google.maps.event.trigger(this, "clusteringend", this);
};
现在您可以使用:
google.maps.event.addListener(markerClusterer, 'clusteringend', myFunction);