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