【osmdroid】singleTapConfirmedHelperをoverrideしてinfoWindowを閉じる

今回もosmdroidの話題。

osmdroidには、osmbonuspackというライブラリを拡張してカスタマイズできる機能が備わっており

これを上手い具合に使ってInfoWindowをカスタマイズすることができます。

customizeしたinfoWindowは、マーカーをクリックすることで表示させることができます。

ここまではなんてことないのですが、このinfoWindowがどこをタップしても

消えない問題が発生し、少し往生してしまいました。

osmdroidのチュートリアルを見直したところ、MapEventsOverlayを拡張してマーカー以外のマップを

タップすることでこの問題を解決することができるみたい。というかチュートリアルを

飛ばしていた疑惑が発生。

てな訳で早速実装。以下のように書くことができます。

</pre>
MapEventsOverlay events = new MapEventsOverlay(new MapEventsReceiver() {
@Override
public boolean singleTapConfirmedHelper(GeoPoint p) {
InfoWindow.closeAllInfoWindowsOn(mapView);
return true; // edited version
}

@Override
public boolean longPressHelper(GeoPoint p) {
return false;
}
});
<pre>

singleTapConfirmedHelperが、マップを一回タップした時、

longPressHelperがマップを長押しした時に呼ばれます。

基本的には上のsingleTapConfirmedHelperしか使わないです。

同メソッド内に以下のように記述します。

InfoWindow.closeAllInfoWindowsOn(mapView);

このように一行追加するだけで今回のInfoWindowが消えない

問題を解決することができました。

osmdroidでカスタマイズしたinfoWindowを使う際は覚えておきましょう。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG