var mmgr = new GMarkerManager(Gmap);
mmgr.addMarkers(markers,0);
mmgr.refresh();
上のような感じでマーカーを表示した後、クリックイベントで消したいのですが、このmarkers(マーカーの配列)のみ消すにはどうしたらいいでしょ
う。
map.clearOverlays() ;だと、他のオーバーレイも一緒に消えてしまうので困っています。
> map.clearOverlays() ;だと、他のオーバーレイも一緒に消えてしまうので困っています。
clearOverlaysを使用しても地図をスクロールさせると表示された記憶がありますので、
全部消す用途にも用いることはできないんじゃないかな、と思います。
単にマーカーを見えなくするという事であれば(試してないので動くかどうか分からないですけど)
version2.77でGMarkerクラスに実装されたhide()メソッドを利用してみてはいかがでしょうか。
takaneサン、ありがとうございます。
確かにclearOverlays()に関しては、表示している範囲が消えるだけで効果は発揮していませんでした。スクロールしてみると、別のところは
消えていませんでした。
hide()も試しましたが、やはり普通のGMarkerじゃないからだめみたいです。
もう少しがんばってみます。
しかし、他にmoveendイベントを仕込んであるのでもう一度addListenerしなければいけない。もっといい方法がないでしょうか。
http://www.google.com/apis/maps/documentation/reference.html
removeListener(handle);
このhandleに何かを指定してイベントリスナーを取り去れないでしょうか。
で、別の方法としてGoogleが提供しているライブラリに削除も可能なマーカー管理オブジェクトがあるみたいです。
http://googlemapsapi.blogspot.com/2007/03/new-open-source-utility-library-for.html
サンプル見てみると
http://gmaps-utility-library.googlecode.com/svn/trunk/markermanager/release/examples/
addMarkersでmarkerを追加して refleshを呼ぶと表示
removeMarkerにmarkerを渡すとそれが消えて
clearMarkersを呼ぶとオールクリア
と、GMarkerManagerと似たような使い方してるみたいです。
Apache License, Version 2.0 なので、気軽に使えると思います。
お役に立てれば。
プログラムもライブラリのソースコードを取り込む行と
GMarkerManagerオブジェクトを作る変わりにMarkerManagerを生成すれば(Gを消すだけですね)
マーカーを追加したりするメソッドなんかは一緒なのでそのまま動くと思います。
しかも、removeMarkerを使えば懸案のマーカー削除が思いのままです。
今大量のマーカーを手軽に扱おうとしたら、これが一番の選択肢なんじゃないでしょうか。
ひょっとして、なにか落とし穴があるのかな?