やりたいこと
マップをタップして、そこにマーカーを表示させるようにしたい。環境
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イベントリスナーを入れたのですが、こちらもうまくいかず、アプリ起動直後に落ちるような感じになりました。