アンドロイドでGoogleマップを起動してみた

  ここではアンドロイドの開発においてgoogle mapを連動する方法を説明します。まず、goog…

 

ここではアンドロイドの開発においてgoogle mapを連動する方法を説明します。まず、google mapを連動するためにはgoogleのアカウントが必要ですので、まだ持っていない方を一つ生成してください。ここではマックでEclipseベースのアンドロイド環境の前提で説明しています。

 

①「Android SDK manager」で「Google Play Service」をインストールする
マックのTerminalで「Android」を叩いて「Android SDK Manager」を実行してください。図1のように「Google Play service」を選択してインストールします。

図1.Android SDK Manager

図1.Android SDK Manager

 

②EclipeseでのGoogle Playのライブラリのインポート
「Google Playライブラリ」をEclipseのプロジェクトにインポートします。「Google playライブラリ」はAndroidのSDKが用意されているところで「extra」のフォルダーの中にあります。図2はインポートした「Google Playライブラリ」を示しています。

図2. Google Playライブラリのインポート

図2. Google Playライブラリのインポート

 

③Eclipseで新しいプロジェクトを生成する
Googleマップを実際に埋め込むプロジェクトを生成します。その後に図3のように、②でインポートしたプロジェクトをライブラリとして登録します。

図3. Google Playライブラリの登録

図3. Google Playライブラリの登録

 

④Google API consoleで「Googole Maps Android API v2」を活性化する
Google API consoleを利用するためには、googleのアカウントが必要です。https://console.developers.google.com/にアクセスして、プロジェクトを生成し、「Google Maps Android API v2」のAPIを活性化します。図4はgoogle console APIで「Google Maps Android API v2」を活性化した画面です。

図4. Google Map APIの活性化

図4. Google Map APIの活性化

 

⑤APIキーを取得する
APIキーを取得します。図5の画面のPublic API accessで「Create New Key」>「Android Key」をクリックすると、「SHA1 fingerprint(hash値)」を要求しますので、それを入力してください。「SHA1 fingerprint(hash値)」は図6のようにEclipse側で確認可能です。また、hash値の後ろに「:【project package名】」も入力する必要があります。キーを登録すると、図5の右側のように「API KEY」が見えるはずです。

図5. API KEYの生成

図5. API KEYの生成

図6. FingerPrintの確認

図5. FingerPrintの確認

 

⑥コード作成
③で生成したプロジェクトとAPIキーなどを使って実際にコードを作成します。以下にはサンプルコードですので、ご参考ください。特に「AndroidMainfest.xml」の場合はキー設定や、permissionなどの設定が含まれているので、ご注意ください。

MainActivity.java

package [your package name];

import android.app.Activity;
import android.os.Bundle;

public class MainActivity extends Activity {

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

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.SupportMapFragment"/>

AndroidMainfest.xml

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

    <uses-sdk
        android:minSdkVersion="14"
        android:targetSdkVersion="19" />
    
    <permission
            android:name="[your_pacakage_name].permission.MAPS_RECEIVE"
            android:protectionLevel="signature"/>
    <uses-permission android:name="[your_pacakage_name].permission.MAPS_RECEIVE"/>
    
    <uses-permission android:name="android.permission.INTERNET"/>
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
	<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
	<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
	<!-- The following two permissions are not required to use
	     Google Maps Android API v2, but are recommended. -->
	<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
	<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

	<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/Theme.Gourmet" >     
        <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="your_api_key"/>
        
        <meta-data android:name="android.app.searchable"
            android:resource="@xml/searchable" />
        
        <activity
            android:name="[your_pacakage_name].MainActivity"
            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>

 

⑦ビルドおよび実行
図7は実行した結果画面です。

図6. 実行結果

図7. 実行結果