【android・googlemap】ドラッグしたマーカーの位置取得について

前回はgooglemapのパーミッションを許可して実際に使うまでの流れを説明しましたが

、今回はgooglemapをカスタマイズするのに必須であるマーカーについて説明

していきます。

googlemapは、初期状態の時はマーカーも現在地取得ボタンも何もない状態であり、

初期位置がアフリカの状態でスクリーン表示されます。

しかしながらせっかくgooglemapを使ってアプリを作るので、今いる自分の

場所をピックアップして実際に中心位置に設定していきたいと思います。

 

まず、onMaoReady関数の中にaddMarkerのコールバック関数を書いていきます。

googlemapはこれを書くだけで中心位置を決めてくれます。なお、latlongがnullだったり

数値でなかったりすると大西洋の端に勝手に位置が決まるので注意してください。


mMap.addMarker( new MarkerOptions()
.title( "ピンのタイトル" )
.draggable(true)
.position( latLng ) );

 

potisionのカッコ内はこんな感じ。お好みで緯度経度を決めてください。

 

<pre>latLng = new LatLng(latitude, longitute);</pre>

 

これでマーカーの位置は決定することができました。

主題である「どうやって動かしたマーカーの位置情報を取得するか」ですが、

マーカーのドラッグ位置を感知するための関数が用意されているのでまずは

そちらを使います。

説明のためにもうコードを出してしまいましょう。

<pre>mMap.setOnMarkerDragListener(new GoogleMap.OnMarkerDragListener() {
    @Override
    public void onMarkerDrag(Marker marker) {
        // TODO Auto-generated method stub
        // Toast.makeText(getApplicationContext(), "マーカードラッグ中", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onMarkerDragEnd(Marker marker) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "マーカードラッグ終了", Toast.LENGTH_LONG).show();
        LatLng d = marker.getPosition();
        double newlat =d.latitude;
        double newlong =d.longitude;
        System.out.println(newlat);
        System.out.println(newlong);
    }

    @Override
    public void onMarkerDragStart(Marker marker) {
        // TODO Auto-generated method stub
        Toast.makeText(getApplicationContext(), "マーカードラッグ開始", Toast.LENGTH_LONG).show();
    }
});</pre>

関数にはそれぞれonMarkerDrag、onMarkerDragEnd、onMarkerDragStartと

ありますが、肝心の位置情報はマーカーを離したときに取得したい。つまり、

onMarkerDragEndの中に処理を書いていきます。

 

肝はこのmarker.getPosition()で、このメソッドでマーカーのドラッグ終了時の位置を

読み取りLatLngに格納しているのが分かります。

取得後d.latitudeとd.longitudeそれぞれの位置情報をdouble変数で抜き取れば後は

こっちのものなので自由に使うことができます。

ここまで短いですがこれでマーカーの位置取得の説明を終わります。

必要なコードもそこまでないのでgooglemap初心者のかたでもさくっとできそうです。

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

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

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

CTR IMG