Google Maps Android API v2の公式ページはこちら
では、早速使ってみます。
ターゲットはAndroid 2.3.3として、Eclipseを開発環境として使います。
手順は5つほどです。
1:Maps API SDKのインストール(Google Play servicesのライブラリをEclipseにインポート)
2:Google Play servicesライブラリのプロジェクトを作成
3:Google Maps V2を表示するアプリのプロジェクトを作成
4:MapsのAPIキー取得
5:取得したキーをプロジェクトに登録して、アプリをスマホにインストール
なお、このページのサンプルコードは、表示するための基本コードであり、初期位置などの設定はactive_main.xmlに記述しています。
MainActivityにハードコードするような場合は、こちらをご参照ください。
Google Maps Android API V2を使ってみる2
1:Maps API SDKのインストール
(Google Play servicesのライブラリをEclipseにインポート)
Eclipse起動後、メニュのWindow -> Android SDK Managerで「SDK Manager」を立ち上げます。
SDK Managerの、Tools、Android 2.3.3、Extrasにチェックをいれます。
Google Play Servicesのチェックは必須です。
installのボタンをクリック。
以上です。
2:Google Play servicesライブラリのプロジェクトを作成
メニュのFile -> New -> Projectで新しいプロジェクトを作成。
「Android Project from Existing Code」を使います。
「Root Directory」は、
“C:\Program Files\Android\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib”です。
「Copy project into workspace」にチェックを入れてFinish。
Package Explorerに表示されます。
3:Google Maps V2を表示するアプリのプロジェクトを作成
メニュのFile -> New -> Projectで新しいプロジェクトを作成。
「Android Application Project」を使います。
画像の情報は例です。適当に変えてください。
Targetはとりあえず2.3.3のみに設定しています。
Themeはなしにしておきます。
以後、Nextをクリックして、最後にFinish。
新しいプロジェクトでは、Google Play Servicesのライブラリを使います。
Package Explorerに表示されたプロジェクト名を右クリックして、「Properties」を選択。
「is Library」にチェックが入っていないのを確認して「Add」をクリック。
「google-play-services_lib」を選んで、OK。
Google Maps v2を表示するため、3つのファイルをいじります。
○MainActivity.java
○AndroidManifest.xml
○activity_main.xml
MainActivity.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<span class="keyword">import</span> android.os.Bundle; <span class="keyword">import</span> android.support.v4.app.FragmentActivity; <span class="keyword">import</span> android.view.Menu; <span class="keyword">public</span> <span class="keyword">class</span> MainActivity <span class="keyword">extends</span> FragmentActivity { @Override <span class="keyword">protected</span> <span class="keyword">void</span> onCreate(Bundle savedInstanceState) { <span class="keyword">super</span>.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override <span class="keyword">public</span> <span class="keyword">boolean</span> onCreateOptionsMenu(Menu menu) { <span class="rem">// Inflate the menu; this adds items to the action bar if it is present.</span> getMenuInflater().inflate(R.menu.activity_main, menu); <span class="keyword">return</span> true; } } |
AndroidManifest.xml
下のコードで、「APIキー」と書かれている部分は、後で修正します。
xxxxxの部分は、ご自分のパッケージ名で置き換えてください。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
<span class="tag"><?xml version="1.0" encoding="utf-8"?></span> <span class="tag"><manifest <span class="attr">xmlns:android=</span><span class="value">"http://schemas.android.com/apk/res/android"</span> <span class="attr">package=</span><span class="value">"<span style="color: #ff0000;">xxxxx</span>"</span> <span class="attr">android:versionCode=</span><span class="value">"1"</span> <span class="attr">android:versionName=</span><span class="value">"1.0"</span> ></span> <span class="tag"><uses-sdk <span class="attr">android:minSdkVersion=</span><span class="value">"10"</span> <span class="attr">android:targetSdkVersion=</span><span class="value">"10"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"android.permission.INTERNET"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"android.permission.WRITE_EXTERNAL_STORAGE"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"android.permission.ACCESS_COARSE_LOCATION"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"android.permission.ACCESS_FINE_LOCATION"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"<span style="color: #ff0000;">xxxxx</span>.permission.MAPS_RECEIVE"</span> /></span> <span class="tag"><uses-permission <span class="attr">android:name=</span><span class="value">"com.google.android.providers.gsf.permission.READ_GSERVICES"</span> /></span> <span class="tag"><uses-feature <span class="attr">android:glEsVersion=</span><span class="value">"0x00020000"</span> <span class="attr">android:required=</span><span class="value">"true"</span> /></span> <span class="tag"><application <span class="attr">android:allowBackup=</span><span class="value">"true"</span> <span class="attr">android:icon=</span><span class="value">"@drawable/ic_launcher"</span> <span class="attr">android:label=</span><span class="value">"@string/app_name"</span> <span class="attr">android:theme=</span><span class="value">"@style/AppTheme"</span> ></span> <span class="tag"><meta-data <span class="attr">android:name=</span><span class="value">"com.google.android.maps.v2.API_KEY"</span> <span class="attr">android:value=</span><span class="value">"<span style="color: #ff0000;">APIキー</span>"</span> /></span> <span class="tag"><activity <span class="attr">android:name=</span><span class="value">"<span style="color: #ff0000;">xxxxx</span>.MainActivity"</span> <span class="attr">android:screenOrientation=</span><span class="value">"portrait"</span> <span class="attr">android:label=</span><span class="value">"@string/app_name"</span> ></span> <span class="tag"><intent-filter></span> <span class="tag"><action <span class="attr">android:name=</span><span class="value">"android.intent.action.MAIN"</span> /></span> <span class="tag"><category <span class="attr">android:name=</span><span class="value">"android.intent.category.LAUNCHER"</span> /></span> <span class="tag"></intent-filter></span> <span class="tag"></activity></span> <span class="tag"></application></span> <span class="tag"></manifest></span> |
activity_main.xml
map:cameraTargetLatとmap:cameraTargetLngはMapsの初期位置です。
map:cameraTiltは、数字が大きくなると、目線が下がったアングルで見るので立体感が増します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<span class="tag"><LinearLayout <span class="attr">xmlns:android=</span><span class="value">"http://schemas.android.com/apk/res/android"</span> <span class="attr">xmlns:map=</span><span class="value">"http://schemas.android.com/apk/res-auto"</span> <span class="attr">android:layout_width=</span><span class="value">"match_parent"</span> <span class="attr">android:layout_height=</span><span class="value">"match_parent"</span> <span class="attr">android:background=</span><span class="value">"#EDEDED"</span> <span class="attr">android:orientation=</span><span class="value">"vertical"</span> ></span> <span class="tag"><fragment <span class="attr">android:id=</span><span class="value">"@+id/map"</span> <span class="attr">android:layout_width=</span><span class="value">"match_parent"</span> <span class="attr">android:layout_height=</span><span class="value">"0dp"</span> <span class="attr">android:layout_margin=</span><span class="value">"4dp"</span> <span class="attr">android:layout_weight=</span><span class="value">"1"</span> <span class="attr">class=</span><span class="value">"com.google.android.gms.maps.SupportMapFragment"</span> <span class="attr">map:cameraTargetLat=</span><span class="value">"34.68649042051079"</span> <span class="attr">map:cameraTargetLng=</span><span class="value">"135.51943183877566"</span> <span class="attr">map:cameraTilt=</span><span class="value">"70"</span> <span class="attr">map:cameraZoom=</span><span class="value">"18"</span> /></span> <span class="tag"></LinearLayout></span> |
注意
Google Play Servicesのライブラリで不具合がおこることがあります。
こんな感じで、プロジェクトとして認識されない現象です。
この場合は、SDK Managerを起動して、「Google Play Services」を一度削除して、再インストールしてください。
以上です。
4:MapsのAPIキー取得
MapsのAPIキーには2種類あります。デバッグ用と本番用です。
MapsのAPIキーを取得するには、デバッグ用の場合は2ステップ、本番用の場合は3ステップふみます。
1:キーストア(証明書)作成
デバッグ用は既存のものを使うのでこのステップはいりませんが、本番用の場合は作成する必要があります。
[デバッグ]
キーストアは以下の場所にあります。
“C:\Documents and Settings\<ユーザー名>\.android\debug.keystore”
[本番]
以下のような情報を準備しておきます。exampleの部分は適当に修正。
●格納場所:どこでもいいです、適当な場所にフォルダーを作成
●証明書のファイル名:example1.keystore
●別名(エイリアス):example2key
●キーストアのパスワード:example3
●姓名:example4
●組織単位名:example5
●組織名:example6.com
●都市名または地域名:tokyo
●州名または地方名:tokyo
●国番号:jp
キーストアの作成にはkeytool.exeを使います。javaのインストールフォルダー内にあります。
例:”C:\Program Files\Java\jre7\bin”
DOS窓を開いて、binフォルダーに移動して以下のコマンドを実行。
keytool -genkey -v -keyalg RSA -keystore <格納場所>\<証明書のファイル名> -alias <エイリアス> -validity 10000
2:フィンガープリントの取得
v1ではMD5のものを使っていましたが、v2ではSHA1を使います。
フィンガープリントの取得にもkeytool.exeを使います。
keytool -list -v -keystore <キーストアの格納場所>
3:MapsのAPIキーの取得
v1ではひとつですみましたが、v2ではプロジェクトごとに取得します。
キー取得ページ
v1の場合
v2ではGoogle APIs Consoleを使います。
Google APIs Console
New
Googleは新しいUIを使うようになったみたいで、Google APIs Consoleを開いたら、「Cloud Console」の画面になっちゃいます。
画面の右下にある「Return to original console」をクリックすると
Dashboardの画面になります。
Google Maps Android API v2をクリックすると、レポートのページに入ってしまいます。
左上側にある API Accessをクリック。
「Create New Android Key…」ボタンをクリック。
空欄に以下を入力して取得します。
<SHA1フィンガープリント>;<パッケージ名>
注意
本番用のAPIキーを使ってアプリを作成してデプロイする場合
本番アプリには免責事項の掲載が必須のようです。
アプリのどこかに「Legal Notices(免責事項)」を表示してください。
詳細はこのページを参照
5:取得したキーをプロジェクトに登録して、アプリをスマホにインストール
AndroidManifest.xml にAPIキーを書いてアプリをインストールしてください。
注
アプリを公開してダウンロード・インストールするような場合は「本番用」のAPIキーを使ってください。
「デバッグ用」のAPIキーでは地図が表示されません。
3Dの地図が表示されます。
floor planも使えるのでデータのある建物の場合、階数が表示されます。
階数をクリックすれば、その階のフロアの情報が表示されます。
左上の磁石マークをタップすると3Dから2Dの地図に変わります。
2Dの地図の場合、磁石マークが非表示になります。
再度3Dにするには、画面上で2本指を上(下)に滑らせます。
v2の地図はベクトル形式なので、ズームイン/アウトは無段階。
Google Maps Android API V2関連の他ページ
Google Maps Android API V2を使ってみる2
Mapsの表示をxmlではなく、MainActivity.javaにコードしたものです。
Google Maps Android API V2覚書
イベント処理やカスタム・インフォウィンドウの作成など、主に地図処理の方法をご紹介。
Google Maps Android API V2覚書 その2
オーバーレイやマーカー、ポリゴンなど地図関連の画像処理のやり方をご紹介。
Leave a Reply