私は現在、jquery uiマップでmarkerclusterプラグインを使用しています。
すべてのマーカーの1つ(markersと呼ばれる)と、検索基準に一致するマーカーの1つ(current_markersと呼ばれる)の2つの配列があります。これらは最初の配列から調整されます。
次に、画面にcurrent_markersを描画します。
しかし、markerclustererライブラリがこの変更に基づいて更新されていないことがわかりました。
では、markerclustererを更新するにはどうすればよいですか?
マーカークラスターを変数に割り当てて更新関数を呼び出すことは可能ですか?
マーカーオブジェクトをvarに格納し、次のようにマップの設定を解除する必要があります。
var markerCluster = new MarkerClusterer(map, markers);
/// ... later on
markerCluster.setMap(null);
これを実行したら、新しいマーカーでnew MarkerClusterer
を初期化できます
更新
あなたがグーグルマップのUIプラグインを使用しているので、ここにいくつかの追加のコードがあります。もちろん、クラスreset_markercluster
のボタンでもクリックを追加しました。これは、それを使用してマップを呼び出す方法を示すためのものです
var _map, _markerCluster;
$(function() {
$('#map_canvas').gmap().bind('init', function(event, map) {
_map = map; // at this point you can call _map whenever you need to call the map
// build up your markers here ...
_markerCluster = new MarkerClusterer(_map, markers); // you could also use map instead of _map here cause it's still present in this function
});
$("button.reset_markercluster").click(function(e) {
e.preventDefault();
_markerCluster.setMap(null); // remove's the previous added markerCluster
// rebuild you markers here ...
_markerCluster = new MarkerClusterer(_map, newMarkers);
});
});
はい、できます。
MarkerClustererオブジェクトを次のように作成したと想定します。
var center = new google.maps.LatLng(10, 20);
var map = new google.maps.Map(document.getElementById('map'), { zoom: 6, center: center, mapTypeId: google.maps.MapTypeId.ROADMAP });
var markerClusterer = new MarkerClusterer(map);
次のように複数のマーカーを追加できます。
var markers = []
var marker = new google.maps.Marker({position: center});
markers.Push(marker);
markerClusterer.addMarkers(markers);
ここでは1つしか追加していないことに注意してください。
次に、次のようなclearMarkersを使用してすべてのマーカーをクリアできます。
markerClusterer.clearMarkers();
markers = [];
整頓のために、ここではマーカー配列の設定も解除しています。
使用可能なすべてのメソッドの完全なドキュメントは、こちらから入手できます。
https://googlemaps.github.io/js-marker-clusterer/docs/reference.html
それは賢明で比較的完全なAPIです。
MarkerClusterオブジェクトのclearMarkers()メソッドを使用することをお勧めします。
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html
marker-clusterer-plus にはremoveMarkers
メソッドがあります:
markerCluster.removeMarkers(markers);