Androidアプリ開発 Google Play services 位置情報をGoogleMapに設定する

2016年07月15日(編集2016年07月26日)
このエントリーをはてなブックマークに追加

Androidアプリでも、IngressやPokémon GOのような位置情報を使うアプリが充実してきました。
この記事は、Google Play servicesを使って位置情報をGoogle Mapに設定する方法を記載した記事です。

環境はAndroid 6.0 (API level 23) です。

環境

  • OS X Yosemite
  • Oracle jdk version 1.8.0_72
  • Android Studio 2.1.2
  • android sdk 24

難易度

初心者向け

サンプルコード

Android-Google-Maps-Demo

Google Play services

Andoridで位置情報を扱う場合、Google Play servicesを利用するのが一般的です。
Google Play servicesは、Googleの人気サービスを最新のAPIから呼び出すことのできるライブラリです。
位置情報の取得にも、このライブラリを使用します。

プロジェクト作成

Android Studioで雛形を作成します。
projectフォルダの上で、

New → Google → Google Maps Activity

と選択します。

Google Maps Activity on Android Studio

これでプロジェクトの雛形が作成されます
gradleのライブラリを確認します。

{project_folder}/build.gradle
     
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    compile 'com.google.android.gms:play-services:9.2.0'
}
        

'com.google.android.gms'が設定されています。
しかし、ライブラリの全てを導入するとアプリの容量が無駄に増えるので、必要なライブラリだけに絞ります。

{project_folder}/build.gradle
     
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:24.0.0'
    compile 'com.android.support:design:24.0.0'
    +compile 'com.google.android.gms:play-services-maps:9.2.0'

}
        

mapsのライブラリだけに絞り込み、Rebuildします。
エラーがなければ、OKです。

Google Maps API keyの取得

Google Mapsを利用するには、Google Maps API keyが必要なので取得します。

Google Developers Consoleにアクセスし、Googleアカウントでログインします。

もしくは、あらかじめGoogleアカウントでログインし、自動生成されたgoogle_maps_api.xmlに記述されているhttps://console.developers.google.comに直接遷移します。
Google APIsの画面を開き、プロジェクトを選択、もしくは新規に作成します。

Google APIs

続行を押します。

Google APIs

APIが有効化されます。認証情報に進むボタンを押します。

sha-1 finger print

パッケージ名とフィンガープリントを入力します。
sha-1 finger printは以下のコマンドで取得できます。

terminal
// input command
keytool -list -v -keystore "/Users/{username}/.android/debug.keystore" -alias androiddebugkey -storepass android -keypass android

別名: androiddebugkey
作成日: 2016/03/13
エントリ・タイプ: PrivateKeyEntry
証明書チェーンの長さ: 1
証明書[1]:
所有者: CN=Android Debug, O=Android, C=US
発行者: CN=Android Debug, O=Android, C=US
        

作成ボタンを押すと、Google Maps API keyを取得できます。

sha-1 finger print

Google Maps API keyはAndoidアプリで利用するので、値をコピーして保存します。

コード実装

google_maps_api.xmlに、Google Maps API keyを設定します。

{project_folder}/app/src/debug/res/values/google_maps_api.xml
<resources>
    <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">
        Google Maps API key
    </string>
</resources>
        

自動生成されたコードに、日本の富士山の緯度・経度を指定します。
富士山の緯度は35.36067114, 経度は138.7277985です。

{project_folder}/app/src/ui/MapsActivity.java
    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Mt.Fuji and move the camera
        LatLng mtfuji = new LatLng(35.36067114, 138.7277985);
        mMap.addMarker(new MarkerOptions().position(mtfuji).title("Marker in Mt.Fuji"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(mtfuji));
    }
        

■ 実装の解説

1. 緯度・経度の設定

LatLng mtfuji = new LatLng(35.36067114, 138.7277985);
        

LatLngクラスに緯度・経度を設定します。

ビルドして実行

実装を終えたら、ビルドしてアプリを実行します。

Sample App

富士山の地図が確認できました。

まとめ

Google Maps API keyを使うことで、Google Mapを扱うことができます。
色々と試してみてください。

タグ検索で調べてみよう

Android6.0 位置情報 Googleマップ