androidでgoogleMap api v2
androidでgoogleMap api v2
googleMap api v2が使えるようになったのでメモ
1.Google Play Service APIのインストール
Android SDK Managerから当該のAPIをインストール
2.Google API コンソールでapiキーを取得
・コマンドプロンプトで以下のコマンドを実行しSH1の証明書フィンガープリント取得
keytool -list -v -keystore C:\Users\ユーザー名\.android\debug.keystore -storepass android
・GoogleDeveloperConsole(https://code.google.com/apis/console/)でGoogle Maps Android API v2を有効にする
・GoogleDeveloperConsoleの認証情報で新規にキーを作成
許可対象ANDROIDアプリを以下のフォーマットで指定
SH1のフィンガープリント;apiを使用するアプリのパッケージ
3.Google Play Serviceライブラリプロジェクトのインポート
既存プロジェクトの追加でAndroid SDKディレクトリ以下の extras\google\google_play_services\libproject\google-play-services_lib を指定する。
4.アプリの作成
・Google Play Serviceライブラリプロジェクトを参照させる
・AndroidManifest.xmlを設定する。
以下の定義を適切な箇所に追加する。
<permission android:name="apiを使用するアプリのパッケージ.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="apiを使用するアプリのパッケージ.permission.MAPS_RECEIVE" /> <!-- Google API へのアクセス --> <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" ></uses-permission> <!-- インターネットへのアクセス --> <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> <!-- OpenGL ES version 2(地図描画用)--> <uses-feature android:glEsVersion="0x00020000" android:required="true"></uses-feature> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyC6KqPRz1oaP9ZD7M0vUyrnDGp85DhuhQU" />
・googleMap表示用のfragmentをxmlに追加する
googleMapはfragmentを使って管理する。
レイアウトのxmlに以下のフラグメントを追加する。
環境によってはプロジェクトのクリアを行うか、includeを使うかしないとエラーが出る場合がある。
<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="550px" class="com.google.android.gms.maps.SupportMapFragment" />
・FragmentActivityを継承したクラスを作成する
fragmentを使う場合、ActivityではなくFragmentActivityを継承したクラスを作成する
この時点で、googleMapに対して座標指定等を行わないで画面初期化するとアフリカが表示されるようになる。
・GoogleMapクラスを使ってgoogleMapを操作する
//googleMapの初期化 GoogleMap googleMap = ( (SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map) ).getMap(); //表示設定 CameraPosition cameraPos = new CameraPosition.Builder() .target(new LatLng(緯度, 経度)).zoom(ズーム倍率) .bearing(0).build(); googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPos));