2016年6月11日土曜日

Maps Android API タップしたところにマーカーを付ける。

やりたいこと
マップをタップして、そこにマーカーを表示させるようにしたい。

環境
Android Stduio 2.1.2

準備(プロジェクトの作成とか...)知っている人はスキップしてください。
1.File - New - New Project... (もしくは、最初の画面で、Start a new Android Studio project)
2.Application nameと、Company Domainを入力して、Next
 SDKバージョンとか選択して、Next
3.Google Maps Activityを選択する。
4.Activity名とかを入れて、Finish
5.APIキーの取得
google_maps_api.xmlの3行目のURLにアクセスする。
行った先でAPIキーを作成する。
google_maps_api.xmlのYOUR_KEY_HEREにキーを貼り付ける。
地図のタップを拾うイベントリスナーを追加する。
デフォルトで存在するonMapReady()にイベントリスナーを追加するとできます。(12行目からの処理を追加します。)
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney and move the camera  ← これは最初からある処理です。シドニーにマーカーをさすやつ。
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));


        // 地図タップイベント  ← ここから追加した処理になります。
        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
               @Override
               public void onMapClick(LatLng point) {

                   // タップした位置の表示
                   Toast.makeText(getApplicationContext(), "タップ位置\n緯度:" + point.latitude + "\n経度:" + point.longitude, Toast.LENGTH_LONG).show();

                   // マーカーを追加
                   LatLng latLng = new LatLng(point.latitude, point.longitude);
                   mMap.addMarker(new MarkerOptions().position(latLng).title("test"));

               }
           }
        );

    }
苦労した点
イベントリスナーをどこにおいたらよいのかよくわからず、苦戦しました。
最初、MapsActivityにOnMapClickListnerのinterfaceをもたせようとしたのですが、うまくいきませんでした。
次に、onCreate()の中にsetイベントリスナーを入れたのですが、こちらもうまくいかず、アプリ起動直後に落ちるような感じになりました。
0 件のコメント:
コメントを投稿