Loading [MathJax]/extensions/tex2jax.js

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行目からの処理を追加します。)
  1. @Override  
  2. public void onMapReady(GoogleMap googleMap) {  
  3.     mMap = googleMap;  
  4.   
  5.     // Add a marker in Sydney and move the camera  ← これは最初からある処理です。シドニーにマーカーをさすやつ。  
  6.     LatLng sydney = new LatLng(-34151);  
  7.     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));  
  8.     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));  
  9.   
  10.   
  11.     // 地図タップイベント  ← ここから追加した処理になります。  
  12.     mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {  
  13.            @Override  
  14.            public void onMapClick(LatLng point) {  
  15.   
  16.                // タップした位置の表示  
  17.                Toast.makeText(getApplicationContext(), "タップ位置\n緯度:" + point.latitude + "\n経度:" + point.longitude, Toast.LENGTH_LONG).show();  
  18.   
  19.                // マーカーを追加  
  20.                LatLng latLng = new LatLng(point.latitude, point.longitude);  
  21.                mMap.addMarker(new MarkerOptions().position(latLng).title("test"));  
  22.   
  23.            }  
  24.        }  
  25.     );  
  26.   
  27. }  
苦労した点
イベントリスナーをどこにおいたらよいのかよくわからず、苦戦しました。
最初、MapsActivityにOnMapClickListnerのinterfaceをもたせようとしたのですが、うまくいきませんでした。
次に、onCreate()の中にsetイベントリスナーを入れたのですが、こちらもうまくいかず、アプリ起動直後に落ちるような感じになりました。
0 件のコメント:
コメントを投稿