Google Maps Android API V2を使ってみる


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」を立ち上げます。

SDKManager1

SDK Managerの、Tools、Android 2.3.3、Extrasにチェックをいれます。
Google Play Servicesのチェックは必須です。

gmap_androidapiv2-2

installのボタンをクリック。
以上です。


2:Google Play servicesライブラリのプロジェクトを作成

メニュのFile -> New -> Projectで新しいプロジェクトを作成。

「Android Project from Existing Code」を使います。

gmap_androidapiv2-3

「Root Directory」は、
“C:\Program Files\Android\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib”です。

「Copy project into workspace」にチェックを入れてFinish。

gmap_androidapiv2-4

Package Explorerに表示されます。

gmap_androidapiv2-5


3:Google Maps V2を表示するアプリのプロジェクトを作成

メニュのFile -> New -> Projectで新しいプロジェクトを作成。

「Android Application Project」を使います。

gmap_androidapiv2-6

画像の情報は例です。適当に変えてください。

Targetはとりあえず2.3.3のみに設定しています。
Themeはなしにしておきます。

gmap_androidapiv2-7

以後、Nextをクリックして、最後にFinish。

新しいプロジェクトでは、Google Play Servicesのライブラリを使います。

Package Explorerに表示されたプロジェクト名を右クリックして、「Properties」を選択。

「is Library」にチェックが入っていないのを確認して「Add」をクリック。

gmap_androidapiv2-8

「google-play-services_lib」を選んで、OK。

gmap_androidapiv2-9

Google Maps v2を表示するため、3つのファイルをいじります。

○MainActivity.java

○AndroidManifest.xml

○activity_main.xml

MainActivity.java

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }

}

AndroidManifest.xml

下のコードで、「APIキー」と書かれている部分は、後で修正します。

xxxxxの部分は、ご自分のパッケージ名で置き換えてください。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxxx"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="10"
        android:targetSdkVersion="10" />
    
    
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="xxxxx.permission.MAPS_RECEIVE" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
   
    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    
    
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="APIキー" />
        <activity
        	android:name="xxxxx.MainActivity"
            android:screenOrientation="portrait"
            
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

activity_main.xml

map:cameraTargetLatとmap:cameraTargetLngはMapsの初期位置です。
map:cameraTiltは、数字が大きくなると、目線が下がったアングルで見るので立体感が増します。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#EDEDED"
    android:orientation="vertical" >
    <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_margin="4dp"
        android:layout_weight="1"
        class="com.google.android.gms.maps.SupportMapFragment"
        map:cameraTargetLat="34.68649042051079"
        map:cameraTargetLng="135.51943183877566"
        map:cameraTilt="70"
        map:cameraZoom="18" />
</LinearLayout>

注意
Google Play Servicesのライブラリで不具合がおこることがあります。
こんな感じで、プロジェクトとして認識されない現象です。

gmap_androidapiv2-10

この場合は、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」の画面になっちゃいます。

gmap_androidapiv2-11

画面の右下にある「Return to original console」をクリックすると
Dashboardの画面になります。

gmap_androidapiv2-12

Google Maps Android API v2をクリックすると、レポートのページに入ってしまいます。

左上側にある API Accessをクリック。

「Create New Android Key…」ボタンをクリック。

空欄に以下を入力して取得します。

<SHA1フィンガープリント>;<パッケージ名>

注意
本番用のAPIキーを使ってアプリを作成してデプロイする場合

本番アプリには免責事項の掲載が必須のようです。

アプリのどこかに「Legal Notices(免責事項)」を表示してください。

詳細はこのページを参照


5:取得したキーをプロジェクトに登録して、アプリをスマホにインストール

AndroidManifest.xml にAPIキーを書いてアプリをインストールしてください。


アプリを公開してダウンロード・インストールするような場合は「本番用」のAPIキーを使ってください。
「デバッグ用」のAPIキーでは地図が表示されません。

3Dの地図が表示されます。

gmap_androidapiv2-13
floor planも使えるのでデータのある建物の場合、階数が表示されます。

階数をクリックすれば、その階のフロアの情報が表示されます。

gmap_androidapiv2-14

左上の磁石マークをタップすると3Dから2Dの地図に変わります。

gmap_androidapiv2-15

2Dの地図の場合、磁石マークが非表示になります。

再度3Dにするには、画面上で2本指を上(下)に滑らせます。

gmap_androidapiv2-16
v2の地図はベクトル形式なので、ズームイン/アウトは無段階。

gmap_androidapiv2-17


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
オーバーレイやマーカー、ポリゴンなど地図関連の画像処理のやり方をご紹介。


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*