techium

このブログは何かに追われないと頑張れない人たちが週一更新をノルマに技術情報を発信するブログです。もし何か調査して欲しい内容がありましたら、@kobashinG or @muchiki0226 までいただけますと気が向いたら調査するかもしれません。

Google Maps APIを使ってみる

Google Maps API

マップを Android アプリに追加しましょう。ベースマップ、3D の建物、屋内のフロア図、ストリート ビューや衛星画像、カスタムのマーカーなどを統合できます。

準備

APIを有効にする

https://console.developers.google.com/apis/library?hl=JA
f:id:forestsoftjpdev:20170528142708p:plain:w300

有効にするをクリックする f:id:forestsoftjpdev:20170528142730p:plain

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);
    }

f:id:forestsoftjpdev:20170528231431p:plain:w200

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"));
    }

f:id:forestsoftjpdev:20170528232904p:plain:w200

マーカーを置いただけでは、最初に表示される場所はマーカーを置いた場所が表示されるわけではなく、地図の表示倍率も最小にセットされている

地図表示倍率と初期表示座標をセットする

表示位置や倍率を変更するにはCameraUpdateをGoogleMapにセットする必要がある

    @Override
    public void onMapReady(GoogleMap googleMap) {
        // 倍率を15.0にセットし、大阪駅の座標をセット
        CameraUpdate update = CameraUpdateFactory.newLatLngZoom(mLatLngOsaka, 15.0f);
        // カメラ位置を動かす
        googleMap.moveCamera(update);
    }

f:id:forestsoftjpdev:20170528233336p:plain:w200

マーカーのクリックイベントを取得する

マーカーのクリックイベントを取得するには、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にマーカーのタイトルが表示される
f:id:forestsoftjpdev:20170528233425p:plain:w200

参考URL

https://developers.google.com/maps/?hl=ja