Google Play services 4.4でストリートビューを表示する


Pocket

ちょっと前の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をインストール。

SDK Manager

 

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の取得
  •  Google API ConsoleでAPI_KEYを作成します。

  • AndroidManifest.xmlの編集
  •  パーミッションとメタデータとかの追加

    1<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    2<uses-permission android:name="android.permission.INTERNET"/>
    3<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    4<!-- Maps API needs OpenGL ES 2.0. -->
    5<uses-feature
    6    android:glEsVersion="0x00020000"
    7    android:required="true"/>
    8<application>
    9    <meta-data android:name="com.google.android.maps.v2.API_KEY"
    10        android:value="My API_KEY"/>
    11    <meta-data
    12        android:name="com.google.android.gms.version"
    13        android:value="@integer/google_play_services_version" />
    14</application>
  • libへの参照追加
    プロジェクトのPreferences – Android – Libraryでgoogle-play-services_libを追加。

 

2.StreetViewPanoramaViewでストリートビューを表示

1public class MainActivity extends ActionBarActivity {
2 
3    private StreetViewPanoramaView svpView;
4 
5    private static final LatLng PIN = new LatLng(36.482945, 138.896541);
6 
7    @Override
8    protected void onCreate(Bundle savedInstanceState) {
9        super.onCreate(savedInstanceState);
10        setContentView(R.layout.activity_main);
11 
12        StreetViewPanoramaOptions options = new StreetViewPanoramaOptions();
13 
14        if (savedInstanceState == null) {
15            options.position(PIN); //場所の指定
16            options.panningGesturesEnabled(true); //画面を指でグリグリ動かす
17            options.streetNamesEnabled(false); //道路名は表示しない
18            options.userNavigationEnabled(true); //ナビゲーションを有効
19            options.zoomGesturesEnabled(true); //ピンチで拡大を有効         
20        }
21         
22        svpView = new StreetViewPanoramaView(this, options);
23        addContentView(svpView,
24                new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
25        svpView.onCreate(savedInstanceState);
26    }
27 
28    @Override
29    protected void onDestroy() {
30        svpView.onDestroy();
31        super.onDestroy();
32    }
33 
34    @Override
35    public void onLowMemory() {
36        svpView.onLowMemory();
37        super.onLowMemory();
38    }
39 
40    @Override
41    protected void onPause() {
42        svpView.onPause();
43        super.onPause();
44    }
45 
46    @Override
47    protected void onResume() {
48        svpView.onResume();
49        super.onResume();
50    }
51 
52    @Override
53    protected void onSaveInstanceState(Bundle outState) {
54        svpView.onSaveInstanceState(outState);
55        super.onSaveInstanceState(outState);
56    }
57 
58     
59}

12-19行目:
 StreetViewPanoramaOptionsを使ってストリートビューの表示設定をしています。

25,30,36,42,48,54行目:
ドキュメントを見ると
“You must call this method from the parent Activity/Fragment’s corresponding method.”

だそうなので呼ぶ。

表示だけならこれで完成。早速実行。

ストリートビュー

かなり簡単にストリートビューが実装できました。
さらに、StreetViewPanoramaFragmentを使えばもっと簡単に実装できるし、リスナーの登録もできるっぽいです。

 
 

Leave a Comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です