Google MapsAPIV3を使用しています。
自分のサイトGMapAPIV2->V3を移行します。しかし、clearOverlays()メソッドを使用してV2で既存のオブジェクトを一度に削除し、V3で廃止されたオブジェクトを個別に削除したために対処しました。
V2
map.clearOverlays();
V3
map.set_visible(false);
popup.close();
大丈夫ですか?または他の解決策?
Google MapsAPIV3を使用しています。
自分のサイトGMapAPIV2->V3を移行します。しかし、clearOverlays()メソッドを使用してV2で既存のオブジェクトを一度に削除し、V3で廃止されたオブジェクトを個別に削除したために対処しました。
V2
map.clearOverlays();
V3
map.set_visible(false);
popup.close();
大丈夫ですか?または他の解決策?
マップ上に作成されたオーバーレイを明示的にクリアするV3 リファレンスには何も見つかりませんでした。また、これを行うコード サンプルも見つかりませんでした。
V3 API は非常に初期の開発者リリースであり、非常に基本的な機能セットしか含まれていないことを指摘することが重要だと思います。彼らがまだこの機能に到達していない可能性は十分にあります。ライブ システムで作業している場合は、V3 が成熟するまで V2 を使い続けることをお勧めします。
開発者グループには、API の使用方法について質問する投稿があり、V3 プロダクト マネージャーからの非常に役立つ回答が寄せられています。
編集:
OK、この機能は軽量に保つために意図的に 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)
多くのマーカーがあると遅くなる可能性があることです。