Google Maps APIを使ってみる
Google Maps API
マップを Android アプリに追加しましょう。ベースマップ、3D の建物、屋内のフロア図、ストリート ビューや衛星画像、カスタムのマーカーなどを統合できます。
準備
APIを有効にする
https://console.developers.google.com/apis/library?hl=JA
有効にするをクリックする
AndroidManifest.xmlの設定
<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY"/>
Mapを表示する
Mapを表示するには幾つか方法がありますが、今回はMapFragmentを使用する。 MapFragmentをレイアウトに配置するだけで、地図を使用することができる。
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); SupportMapFragment mapFragment = SupportMapFragment.newInstance(); FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.add(R.id.container, mapFragment); fragmentTransaction.commit(); mapFragment.getMapAsync(mOnMapReadyCallback); }
Mapにマーカーを置く
Mapにマーカーを置くには、GoogleMapオブジェクトを取得する必要がある
MapFragment#getMapAsyncをコールすると、Mapの準備ができたタイミングで、OnMapReadyCallBack#onMapReadyがコールされる。
private LatLng mLatLngOsaka = new LatLng(34.702485, 135.495951); @Override public void onMapReady(GoogleMap googleMap) { googleMap.addMarker(new MarkerOptions() .position(mLatLngOsaka) .title("Marker")); }
マーカーを置いただけでは、最初に表示される場所はマーカーを置いた場所が表示されるわけではなく、地図の表示倍率も最小にセットされている
地図表示倍率と初期表示座標をセットする
表示位置や倍率を変更するにはCameraUpdateをGoogleMapにセットする必要がある
@Override public void onMapReady(GoogleMap googleMap) { // 倍率を15.0にセットし、大阪駅の座標をセット CameraUpdate update = CameraUpdateFactory.newLatLngZoom(mLatLngOsaka, 15.0f); // カメラ位置を動かす googleMap.moveCamera(update); }
マーカーのクリックイベントを取得する
マーカーのクリックイベントを取得するには、OnMarkerClickListenerを使用する
@Override public void onMapReady(GoogleMap googleMap) { Marker marker = googleMap.addMarker(new MarkerOptions() .position(mLatLngOsaka) .title("Marker")); CameraUpdate update = CameraUpdateFactory.newLatLngZoom(mLatLngOsaka, 15.0f); googleMap.moveCamera(update); googleMap.setOnMarkerClickListener(mOnMarkerClickListener); } @Override public boolean onMarkerClick(Marker marker) { String title = marker.getTitle(); Toast.makeText(getBaseContext(), title, Toast.LENGTH_SHORT).show(); return true; }
マーカーをタップするとToastにマーカーのタイトルが表示される