大丈夫ですか?GMap API V2 の clearOverlays() を Google Maps API V3 に変更しますか?
-
11-09-2019 - |
質問
Google Maps API V3を使用しています。
私のサイト GMap API V2 -> V3 を移行します。しかし、V2ではclearOverlays()メソッドを使って既存のオブジェクトを一括削除し、V3では廃止されたものでは個別にオブジェクトを削除したので対処しました。
V2
map.clearOverlays();
V3
map.set_visible(false);
popup.close();
大丈夫ですか?または他の解決策はありますか?
解決
何も見つかりませんでした V3 リファレンス これは地図上に作成されたオーバーレイを明示的にクリアしますが、これを行うコードサンプルも見つかりませんでした。
V3 API は非常に初期の開発者リリースであり、含まれているのは とても基本的な 機能のセット。彼らがこの機能をまだ理解していないだけである可能性が十分にあります。ライブ システムで作業している場合は、V3 がより成熟するまで V2 を使い続けることをお勧めします。
開発者グループには、API の使用方法に関する質問をする投稿があり、V3 プロダクト マネージャーからの非常に有益な回答が寄せられています。
編集:
この機能は、軽量性を保つために API から意図的に欠落しているようです。自分でオーバーレイ オブジェクトを追跡し、次を呼び出す必要があります。
object.set_map(null);
それらを削除するには。
他のヒント
私がやることは次のとおりです。
空の配列リテラルを作成し、作成時にマーカーをプッシュし、必要に応じてマーカーを削除します。
var eviction_list = [];
function evictMarkers() {
// clear all markers
$(eviction_list).each(function () {
this.set_map(null);
});
// reset the eviction array
eviction_list = [];
}
//in function adding markers
......
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title: elem.title
});
eviction_list.push(marker);
......
//to clear all markers
evictMarkers();
hongwei が正しく述べているように、この関数は set_map() ではなく setMap() と呼ばれます。
見る http://code.google.com/apis/maps/documentation/v3/overlays.html#HideShow
問題はそれです setMap(null)
マーカーが多い場合は遅くなる可能性があります。