1

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) の前に他の参照を削除しようとしましたが、まだ運がありません。

ドキュメントは、メソッドが単にそれを削除するように聞こえますが、明らかに、少なくとも満たすには、もっと必要なものがあります。何か案は?

4

1 に答える 1

3

元の投稿者がまだこの遅い回答を必要としないことを願っていますが、同様の症状があり、インターネットで助けを見つけることができませんでした.

私にとっては、重複したマーカーが表示される原因となったデータの入力に問題がありました。したがって、setMap(null)実際には問題なく機能していましたが、呼び出しは何もしていないように見えましたが、もちろん、他のマーカーでのみ機能し、他のマーカーはマップ上に残り、機能してsetMap(null)いないように見えました。

したがって、マーカーのマップが null に設定されていることが確実である (javascript コンソール/デバッガーから確認できます) が、マーカーがまだ表示draggable: trueされている場合は、マーカーのパラメーターを設定して移動し、別のマーカーが背後に潜んでいるかどうかを確認してください。それ。

于 2014-12-15T07:50:53.217 に答える