私はGoogle MarkerClustererを使用しています。マップがズームレベル15を超えるたびに、すべてのマーカーのクラスターを解除します。
設定オプションにmaxZoom
設定がありますが、 ドキュメントでは、何をすべきかが明確にされていません 。
次のように設定しようとしましたが、マップに設定したズームレベルに関係なく、マップはクラスター化されたままです。
new_mc = new MarkerClusterer(map, newco_markers, {
maxZoom: 9
});
私は何か間違ったことをしていますか、オプションが何をすることになっているのかを誤解していますか、またはこれを修正する別の方法はありますか?
いつでも異なるコードを作成することができます。
このようなもの:
function show_hide_markers(zoom) {
var markerVisible;
for (var i = 0; i < markers.length; i++) {
if (zoom <= zoomRanges[i][1] && zoom >= zoomRanges[i][0] ) {
markerVisible = true
} else markerVisible = false;
if (markers[i].getVisible() != markersVisible) {
markers[i].setVisible(markersVisible);}
}
}
// ...
google.maps.event.addListener(map, 'zoom_changed', function () {
show_hide_markers(map.getZoom());
});
最初にマーカー配列を作成します。ズームレベルの範囲は、マーカー配列のインデックスに対応する別の配列に保持できます(ここでは、zoomRanges)。ズームレベルは、マーカー配列の作成に使用された元の配列(リスト)からも取得できます。
この例では、ズーム範囲が各マーカーに個別に割り当てられていますが、2次元配列を使用して、クラスター全体のmarkerVisibleを取得できます。
マーカー数が極端に高くない場合は、それで十分です。おそらく、可視性を設定する代わりに、追加/削除を適用できます。
マーカーマネージャーとは異なり(少なくとも最近のいくつかのケースでは)、これはAPI3 + APIキーが適用されている場合でも機能します。私はこれを昨日/今日行うことを余儀なくされました。