読者です 読者をやめる 読者になる 読者になる

androidでgoogleMap api v2

Android

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