marker.setMap(null) 呼び出しは、マップからマーカーを削除しません。
マップとマーカーの変数が正しい場所を指していることを確認しましたが、 setMap(null) 呼び出しではマーカーがマップ上に表示されたままになります。setVisible(false) も効果がありません。
if(sch_ovr_google_markers.length > 0){//remove from map
for(var i=0;i < sch_ovr_google_markers.length;i++){
sch_ovr_google_markers[i].setMap(null);//no effect
}
}
マーカーは次の場所に作成されます。
var latlon = new google.maps.LatLng(o.lat, o.lon);
var marker = new google.maps.Marker(
{
map:sch_google_map,
position: latlon,
title: gpn[4],
icon: pinImage,
shadow: pinShadow,
animation: google.maps.Animation.DROP,
zIndex:10000,
index: c
});
sch_ovr_google_markers[lidx] = marker;
sch_ovr_google_iws[lidx] = new google.maps.InfoWindow({ content:h, position:latlon });
sch_ovr_google_cbs[lidx] = sch_ovr_google_marker_init(marker,lidx);
この 1 つの問題を除けば、マップ全体がうまく機能します。周囲のコードのテストは良好で、複雑すぎて完全に一覧表示できません。
それが機能するための隠された前提条件があるかどうか疑問に思っています。setMap(null) の前に他の参照を削除しようとしましたが、まだ運がありません。
ドキュメントは、メソッドが単にそれを削除するように聞こえますが、明らかに、少なくとも満たすには、もっと必要なものがあります。何か案は?