com.google.maps.overlays.Markerのマウスイベントの取得を無効にする

com.google.maps.overlays.Markerのオプションで独自に設定するicon(DisplayObject)でマウスイベントをコントロールするため、何とかMarkerそのもののマウスイベントの取得を無効にする必要があった。

Markerはcom.google.maps.interfaces.IOverlayを実装している。IOverlayを見ると、Markerで描画する内容はforegroundプロパティーであることが分かる。

恐らくforegroundはSpriteだろうと確かめたらその通りだったので、marker.foreground.mouseEnabled=falseとしてマウスイベントの取得を無効にしたつもりだったが、まだ無効になっていない。

さらにforeground.numChildで調べると、foregroundの下にもう一枚Spriteを持っていて、iconはそのSpriteの下に追加されるようだ。

最終的にこのスプライトでmouseEnabled=falseとすることでマウスイベントの取得を無効にできた。

当然の事ながら、このように設定したマーカーはマウスクリックやツールチップの表示もできなくなる。

ただ、iconに設定した独自のスプライトの一部分だけマウスイベントの取得を有効にすると、ツールチップが表示された。確認していないが、恐らくはクリックについても同様だと思われる。

var marker:Marker = new Marker(latlng, new MarkerOptions(mopt));
var markerForeground:Sprite = marker.foreground as Sprite;
markerForeground.mouseEnabled = false;
var markerForegroundChild:Sprite = markerForeground.getChildAt(0) as Sprite;
markerForegroundChild.mouseEnabled = false;

コメント

このブログの人気の投稿

レオナルド・ダ・ビンチはなぜノートを「鏡文字」で書いたのか?

macでsmb(samba)共有サーバーに別名で接続(別アカウント名で接続)する方法

Google DriveにCURLでアップロードするには?