やりたいこと
マップをタップして、そこにマーカーを表示させるようにしたい。
環境
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 件のコメント:
コメントを投稿