浜松のWEBシステム開発・スマートフォンアプリ開発・RTK-GNSS関連の開発はお任せください
株式会社シーポイントラボ
TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:静岡県浜松市中区富塚町1933-1 佐鳴湖パークタウンサウス2F

【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を使う際は覚えておきましょう。

  • この記事いいね! (0)