【Androidアプリ開発】Google Maps Android API v2を使う
こんにちは。
バイトの方で地図関連の案件に携わっているので今日は予習も兼ねて、Google Maps Android API v2の導入をやってみたいと思います。
ここを参考にしました。
Google Maps Android API v2 — Google Developers
APIキーの取得
まず、
https://cloud.google.com/console/project
にてプロジェクトを作成。(自分はすでに作成済みだったのでここはスルー)
作成したらそのプロジェクトのページへ。
左側のメニュー「APIs&auth」の中の「APIs」に飛んで、ここで「Google Maps Android API v2」をONにする。
「APIs&auth」の中の「Credentials」に飛んで「CREATE NEW KEY」ボタンを押してAndroidを選択。
入力するのは、
{SHA1 fingerprint};{パッケージネーム}
っていう形式になります。
SHA1 fingerprintの確認方法は、
Eclipseの環境設定の、Android→ビルドで確認できます。
こんな感じ。
これ入力してCreateすればOK!
Manifestファイルの記述
Manifestに追加するのは、4点になります。
1.OpenGL ESの依存明示
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
なんかGoogleMapは内部でOpenGL ESを使用してるっぽいので書いておくらしい。
ちなみにこの
2.パーミッションの記述
<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"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
これらは上から順に、
インターネットアクセス:マップのダウンロードに使う
ネットワーク状態チェック:これも上に同じ
外部ストレージへの書き込み:マップのキャッシュを保存しておくのに使う
GoogleAPIへのアクセス:省略
残り2つは、ネットワーク経由での位置情報取得、GPS経由での位置情報取得。Mapを表示するだけならなくても平気だけどまあ絶対つかうだろう、、、ってことで、、、
3.GooglePlayServicesのバージョン情報
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
実際に使用してみる
ここまで来たらあとは使うだけ!
ってことで試しに以下のコードを書いてみました。
activity_main.xml
<LinearLayout 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" android:orientation="vertical" > <FrameLayout android:id="@+id/content" android:layout_width="match_parent" android:layout_height="match_parent" > </FrameLayout> </LinearLayout>
MainActivity.java
package com.taishonet.mapsample; import android.app.FragmentManager; import android.app.FragmentTransaction; import android.os.Bundle; import android.app.Activity; import com.google.android.gms.maps.MapFragment; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); FragmentManager manager = getFragmentManager(); FragmentTransaction transaction = manager.beginTransaction(); MapFragment map = new MapFragment(); transaction.add(R.id.content, map); transaction.commit(); } }