ちょっと前の5/7に「Google Play services 4.4」がリリースされましたね。
Android Developers Blog : Google Play services 4.4
4.4と言えば、やっぱり…
Androidアプリからストリートビューが使えるようになったぜ!!
ということで、早速試してみました。
Google Play Services SDKのVerUp
まず初めにSDKのバージョンアップです。
1.SDK Managerを起動してGoogle Play services Rev.17を選択してInstall packagesをインストール。
2.google-play-services_libプロジェクトをインポートする。
<Android SDKインストールフォルダ>/android-sdk/extras/google/google_play_services/libproject/google-play-services_libをEclipseにインポートします。
これで前準備は完了。
ストリートビューの表示
とりあえずストトリートビューを表示させてみたいと思います。
1.android.maps.v2.APIを使用するときのやつ
map APIを使用するための前準備は、今まで通りで問題ないようです。
- API KEYの取得
- AndroidManifest.xmlの編集
Google API ConsoleでAPI_KEYを作成します。
パーミッションとメタデータとかの追加
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<application>
<meta-data android:name="com.google.android.maps.v2.API_KEY"
android:value="My API_KEY"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
プロジェクトのPreferences – Android – Libraryでgoogle-play-services_libを追加。
2.StreetViewPanoramaViewでストリートビューを表示
public class MainActivity extends ActionBarActivity {
private StreetViewPanoramaView svpView;
private static final LatLng PIN = new LatLng(36.482945, 138.896541);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StreetViewPanoramaOptions options = new StreetViewPanoramaOptions();
if (savedInstanceState == null) {
options.position(PIN); //場所の指定
options.panningGesturesEnabled(true); //画面を指でグリグリ動かす
options.streetNamesEnabled(false); //道路名は表示しない
options.userNavigationEnabled(true); //ナビゲーションを有効
options.zoomGesturesEnabled(true); //ピンチで拡大を有効
}
svpView = new StreetViewPanoramaView(this, options);
addContentView(svpView,
new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
svpView.onCreate(savedInstanceState);
}
@Override
protected void onDestroy() {
svpView.onDestroy();
super.onDestroy();
}
@Override
public void onLowMemory() {
svpView.onLowMemory();
super.onLowMemory();
}
@Override
protected void onPause() {
svpView.onPause();
super.onPause();
}
@Override
protected void onResume() {
svpView.onResume();
super.onResume();
}
@Override
protected void onSaveInstanceState(Bundle outState) {
svpView.onSaveInstanceState(outState);
super.onSaveInstanceState(outState);
}
}
12-19行目:
StreetViewPanoramaOptionsを使ってストリートビューの表示設定をしています。
25,30,36,42,48,54行目:
ドキュメントを見ると
“You must call this method from the parent Activity/Fragment’s corresponding method.”
だそうなので呼ぶ。
表示だけならこれで完成。早速実行。
かなり簡単にストリートビューが実装できました。
さらに、StreetViewPanoramaFragmentを使えばもっと簡単に実装できるし、リスナーの登録もできるっぽいです。






