[osmdroid を使って Android の OpenStreetMap 地図に 吹き出し付きのマーカーを表示する


osmdroid を使って OpenStreetMap を Android に表示する
の続きです

osmdroid のマーカー 

osmdroid のマーカーは2つある。

  • ItemizedIconOverlay クラス

古いやり方

  • Marker クラス

Google Maps API に合わせてある新しいやり方

ItemizedIconOverlay の使い方は、下記を参考に。

osmdroid を使って Android の OpenStreetMap 地図に マーカーを表示する

Marker クラス

ソースコードのコメントが一番詳しい説明だったので、
要約を載せておく。

GoogleMaps Android API v2 にできる限り似せている。
主な違い

  • Z-Indexには対応していない。出現順に描画される。
  • アイコンは、Android Drawable が指定できる。
  • 吹き出しは、Android Viewを使用できる。
  • 吹き出しの説明の下に、小さいテキストフォントで表示される追加の説明(sub-description)を表示できる。
  • 吹き出し(InfoWindow)に画像を表示できる。
  • 表示する/しないが設定できる。
  • マーカーにタッチしたときは、地図の中央に配置する。
  • 吹き出しを開くと、他の吹き出しを自動的に閉じる。
  • マーカーごとにイベントリスナーを設定できる。

使い方

// 基本
        Marker marker = new Marker( mMapView );
        marker.setPosition( new GeoPoint(緯度, 経度 ) );
        marker.setTitle ( タイトル );
        marker.setSnippet( 説明 );
        mMapView.getOverlays().add(marker);

    // アイコンを変更する
    Drawable icon = getResources().getDrawable(R.drawable.marker);
    marker.setIcon(icon);

    // 吹き出しに画像を表示する
    Drawable image = getResources().getDrawable(R.drawable.image );
    marker_1.setImage ( image );

    // クリックリスナーを設定する
    marker.setOnMarkerClickListener( new Marker.OnMarkerClickListener() {
        public boolean onMarkerClick(Marker marker, MapView mapView) {
           // クリックした時の処理
            return true;
        }
    });

スクリーンショット

吹き出しを表示する

吹き出しに画像を表示する

github にサンプロコードを公開した