質問

だから私はマップを(数百)のマーカーを含むアプリケーションを持っています。私はGoogleが提供するMarkerCluster.jsを使ってマーカーをクラスターにして、全体を調べやすくします。私はAPI V3を使用しています。

それのすべてでうまくいます。しかし、MarkerClusterがすべてのマーカーをクラスタ化したときに、私がやりたいことは何らかの操作を実行することです。私は自分自身をやろうとしましたが、見えず。

提案?(私はこれを考えるよりも簡単になると思います、そして私の脳はたっぷりの揚げ物です)

役に立ちましたか?

解決

私は同じことを疑問に思っていました。これは私がした方法です:

google.maps.event.addListener(markerClusterer, 'clusteringend', myFunction);
.

他のヒント

地図 "IDLE" イベント作業?MarkerClustererが終了したら、PageがロードされたときにMarkerClusterをロードしていると仮定します。

このライブラリが維持されていないようです。それは何年もの間、v3では正しく機能しないので、解決策は開発されていません。

だから、私は最小化されていないバージョンをダウンロードし、私が働いているプロジェクトのソースコードに入れる。承認されたソリューションは、図書館で直接変更を加える場合にのみ機能します。

forループの後に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);

.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top