Google Mapsを表示します
Displaying Google maps
AndroidSDKがバージョン1.0をリリースした当初、
AndroidアプリケーションにGoogle Mapsを組み込む前に、
フリーのGoogle Maps APIキーを適応させる必要があります。
キーを適応させる時に、Googleの使用条件に同意することも必要で、
その使用条件は注意深く読んだほうが良いと思います。
キーを取得したら、そのキーをアプリケーションに加える必要があり、
それが出来ればGoogle Mapsが正確に表示されます。
以下に手順を示します。
ちょっと注釈
Googleが提供しているMaps APIキーを適応させるための詳細は、
http://code.google.com/android/add-ons/google-apis/mapkey.html
にあります。
手順としてまず、もし開発するアプリケーションをAVD
(Androidエミュレータ)やアプリケーションを開発しているマシンに
直接つないだAndroidデバイスでテストしているのなら、
SDKデバッグ証明書の位置は、初期設定のままのフォルダにあります。
OS_Xユーザならば/Users/<username>/.android
Windows7ユーザならばC:\Users\<username>\.androidにあります。
Eclipseを起動し、Preferenceに行きAndroidのアイテム一覧を開き
Buildを選ぶと、デバッグ証明書の存在を確認できます。
開いたウインドウの右側のDefault debug keystoreにあるアドレスが
デバッグ証明書の位置になります。
WindowsXPユーザなら
C:\Documents and Settings\<username>\Local Settings
\Application Data\Android.にAndroidフォルダがあります。
デバッグキーが保存されているファイル名はdebug keystoreです。
これは開発するアプリケーションにサインするために
Eclipseを使う証明書となります。
この証明書をつかってAndroidエミュレータや実際のデバイスで
アプリケーションを走らせられる様になります。
Debug keystoreを使うためには、
インストールしたJDKに含まれるKeytoolアプリケーションを使って、
MD5の識別子を知る必要があります。
この識別子はフリーGoogle Mapsキーに適応させる必要があります。
Windowsユーザならばkeytoosアプリケーションは大抵、
C:\Program Files\Java\<JDK_version_numbet>\bin
フォルダにあります。
コマンドウインドウを開き、keytoolアプリケーションのある
ディレクトリに移動し、以下のコマンドを入力します。
このコマンドでMD5識別子を引き出します。
keytool -list -alias androiddebugkey -keystore
"C:\Users\<username>\.android\debug.keystore" -storepass android
上のコマンドで使った引数の内容は以下の通りです。
●−list 指定されたkeystoreの詳細を表示します。
●-alias keystoreの別名です。
●-keystore keystoreの位置を指定します。
●-storepass -keystore keystoreのパスワードを指定します。
●-keypass keystoreにあるキーのパスワードを指定します。
●-v verbose(詳細)モードを指定します。
すべての異なる識別子を表示します。MD5やSHA1など
ちょっと注釈
Androidエミュレータやデバイスで開発するアプリケーションを
デバッグするためMaps APIを取得するdebug keystoreのMD5識別子を
使うこともできますが、そのキーはAPKファイルのように
開発しているAndroidアプリケーションをエクスポートしようとしているか
どうかを確認することはありません。
開発したAndroidアプリケーションをAndroidマーケットに展開する
準備ができたときには、(他の流通経路でもそうですが、)
アプリケーションにサインするために使われる証明書を使って、
Maps APIに再度適応させる必要があります。
MD5証明書の識別子をコピーして、ウェブブラウザで
http://code.google.com/android/maps-api-signup.html
のページを開きます。
そしてページにある指示に従ってアプリケーションを仕上げ、
Google Mapsキーを取得します。
これが出来たときには、取得したキー、アプリに使う識別子の証明書、
マッピングを始めるためのXMLレイアウトの例などが取得できます。
これで最初の段階が終了です。
Displaying the Map
Google Mapsのキーを取得したことで、開発するAndroidアプリケーションに
Google Mapsを表示する準備ができました。
MapViewを使ってアプリケーション内にGoogle Mapsを表示していくために
AndroidManifest.xmlファイルにINTERNETパーミッションを
加える必要があります。
加えて、Mapsのライブラリを参照する必要もあります。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.learn2develop.maps"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/is_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<uses-library android:name="com.google.android.maps" />
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<manifest>
ちょっと注釈
MapView viewを使うためには、AndroidプロジェクトはGoogle APIsを
ターゲットとして使わなければなりません。
EclipseにあるProject Explorerをチェックすることで
APIがターゲットになっているか確認でき、
Google APIsフォルダを探していきます。
Google APIsフォルダを開くと、maps.jarファイルが確認できるはずです。
このファイルにはMapViewライブラリが入っています。
使っているアクティビティのXMLファイル(例えばmain.xml)の中で、
<com.google.android.maps.MapView>要素を加える必要があります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<com.google.android.maps.MapView
android:id="@+id/mapView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:apiKey="取得したキーをここに入力します"
android:clickable="true"
android:state_enabled="true" />
<RelativeLayout>
android:apiKeyの値には以前取得したMaps APIキーを入力します。
最後にGoogle Mapsを表示するアクティビティを
MapActivity基底クラスを拡張しなければなりません。
import android.os.Bundle;
import com.google.android.maps.MapActivity{
public class MainActivity extends MapActivity{
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected boolean isRouteDisplayed(){
return false;
}
}
MapActivity基底クラスを拡張していくときに、
isRouteDisplayed()メソッドを実行することも必要で、
このメソッドはGoogleのアカウント確認を目的に使われて、
マップ上でルーティング情報を表示させていくのなら
このメソッドでtrueを返さないといけません。
マップが表示されない?
Google Mapsが表示される代わりに、何もないグリッドが表示されたら、
その時は、大抵の場合main.xmlファイルのAPIキーが間違っていることが
多いです。また、AndroidManifest.xmlファイルにINTERNET
パーミッションを加えるのを忘れている可能性もあります。
emulator/devices上でインターネットに接続できるか確認します。
もしプログラムが動かない場合には、AndroidManifest.xmlに
以下のようなステートメントを追加し忘れているかもしれません。
<uses-library android:name="com.google.android.maps />
AndroidManifest.xmlファイルに配置するのにも注意します。
<application>要素に入れるべきですが、
<activity>要素の外に置くべきです。
|
【用語解説】
XML
HTMLと同じような言語ですが、
すべての型の複雑なデータ構造を
送信するための設計ができる
ファイル型式。
オブジェクト
ある手続きを持った
データアイテムで、
他の手続きと関連づけされるもの
metaタグ
ウェブページに与える
情報の宣言につかわれ
検索エンジン・ウェブアプリ
などにウェブページの内容を
伝える役目をする。
metaタグの内容は
ページ内に表示されない。
コンストラクタ
オブジェクト指向
プログラミングで使われ
新しいオブジェクトが
作られ時に呼び出される
メソッドのこと。
クラス
オブジェクト指向
プログラミングでの
オブジェクトの型
オブジェクト指向プログラミング
プログラミングの
方式のことで、
プログラマはデータ型を
定義できるだけでなく
自動的にデータ型と
メソッドを関連付け
できる
アクティビティ
Androidにおける
アクティビティは
Androidアプリの画面に
相当するもの
ボタンやウェブページ
など表示されている
すべてのもののこと。
view
Androidのアプリを開発する
上で使う部品のことで、
トリガボタン・イメージボタン
チェックボックスなどのこと。
UI
ユーザインターフェースのこと。
Bind(バインド)
シンボルとデータを
関連させるため
または、データの一片と
他のものを関連させること。
以下は例。
・変数に値を入れる。
(変数の初期化)
・特定のEthernetポートと
ネットワークプロトコルを
関連付けする。
・Javaの変数のセット上に
XML文書を配置すること。
または、ほかの
プログラミング言語でも。
|