以上で完了です。

開発を始めるには、デベロッパー ドキュメント をご覧下さい。

Google Maps Android API をアクティベートする

まず初めに Google Developers Console で次の作業を行います。

  1. プロジェクトを作成または選択する
  2. Google Maps Android API をアクティベートする
  3. 適切なキーを作成する
続ける

位置データ

モバイル アプリケーション特有の機能の 1 つが位置認識です。 モバイル ユーザーは自分の端末をどこにでも持って行くため、アプリに位置認識を追加することで、ユーザーがより状況に適したエクスペリエンスを得ることができます。

コードサンプル

GitHub の ApiDemos レポジトリには、マップの位置データの使用方法を示したサンプルが含まれています。

位置データの使用

Android 端末で使用できる位置データには、端末の現在地(いくつかのテクノロジーを組み合わせて特定されます)、移動のルートと手段、端末が事前定義済みの地理的境界であるジオフェンスを越えて移動しているかどうか、などがあります。

アプリケーションのニーズに応じて、いくつかの位置データの使用方法の中から選択できます。

  • 現在地レイヤーは、マップに端末の位置を表示する単純な方法を提供します。 データは提供しません。
  • すべてのプログラムによる位置データのリクエストには、Google Play サービスの Location API が推奨されます。

  • LocationSource インターフェースを使用すると、カスタム ロケーション プロバイダを提供できます。

位置パーミッション

アプリからユーザーの位置にアクセスする必要がある場合、適切な Android 位置パーミッションをアプリに追加して、パーミッションをリクエストする必要があります。

Android では、ACCESS_COARSE_LOCATIONACCESS_FINE_LOCATION の 2 つの位置パーミッションが提供されています。 選択したパーミッションによって、API によって返される位置の精度が決まります。 必要な精度に応じた Android 位置パーミッションを 1 つリクエストするだけです。

  • android.permission.ACCESS_COARSE_LOCATION - API が端末の位置を決定するために、WiFi やモバイル端末のセルデータ(あるいはその両方)を使用できるようにします。

API は、1 つの都市ブロックとほぼ同じ精度で位置を返します。

  • android.permission.ACCESS_FINE_LOCATION - API が、グローバル ポジショニング システム(GPS)や、WiFi やモバイル端末のセルデータなど、使用可能な位置プロバイダから可能な限り正確な位置を決定できるようにします。

アプリ マニフェストにパーミッションを追加する

次のパーミッションのいずれか 1 つを、<manifest> 要素の子要素として Android マニフェストに追加します。 低精度位置パーミッションを次に示します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp" >
  ...
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
  ...
</manifest>

高精度位置パーミッションを次に示します。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myapp" >
  ...
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
  ...
</manifest>

実行時パーミッションをリクエストする

Android 6.0(Marshmallow)には、パーミッションを処理するための新しいモデルが導入されており、ユーザーがアプリをインストールやアップグレードする際のプロセスが効率化されています。 アプリの対象が API レベル 23 以降である場合は、この新しいパーミッション モデルを使用できます。

アプリで新しいパーミッション モデルがサポートされており、端末で Android 6.0(Marshmallow)以降が実行されている場合、ユーザーはアプリをインストールまたはアップグレードする際にパーミッションを付与する必要はありません。

アプリは、実行時に必要なパーミッションがあるかどうかをチェックして、ない場合はそのパーミッションをリクエストする必要があります。

システムからユーザーに、パーミッションを求めるダイアログが表示されます。

優れたユーザー エクスペリエンスを実現するには、適切な状況でパーミッションをリクエストすることが重要です。 アプリが機能するために位置情報が必須の場合は、アプリの起動時に位置パーミッションをリクエストする必要があります。 この場合、パーミッションが必要な理由をユーザーに説明する丁寧なようこそ画面やウィザードを使用することをお勧めします。

アプリの機能の一部のみでパーミッションが必要な場合は、パーミッションを必要とするアクションをアプリが実行するときに、位置パーミッションをリクエストする必要があります。

アプリは、ユーザーがパーミッションを付与しなかった場合、その状況をスムーズに処理する必要があります。 たとえば、特定の機能に対してパーミッションが必要な場合、アプリはその機能を無効にできます。 アプリが機能するためにパーミッションが必須である場合、アプリはすべての機能を無効にして、パーミッションを付与する必要があることをユーザーに通知できます。

次のコードサンプルでは、現在地レイヤーを有効にする前に、サポート ライブラリを使用してパーミッションがあるかどうかをチェックしています。

if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)
                == PackageManager.PERMISSION_GRANTED) {
    mMap.setMyLocationEnabled(true);
} else {
    // Show rationale and request permission.
}

次のサンプルでは、サポート ライブラリから ActivityCompat.OnRequestPermissionsResultCallback を実装して、パーミッション リクエストの結果を処理します。

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == MY_LOCATION_REQUEST_CODE) {
      if (permissions.length == 1 &&
          permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION &&
          grantResults[0] == PackageManager.PERMISSION_GRANTED) {
        mMap.setMyLocationEnabled(true);
    } else {
      // Permission was denied. Display an error message.
    }
}

Android の実行時パーミッションのその他のコードサンプルやベスト プラクティスは、Android パーミッション モデルのドキュメントをご覧ください。

現在地レイヤー

現在地レイヤーと現在地ボタンを使用して、ユーザーの現在地をマップに表示できます。

注: 現在地レイヤーを有効にする前に、必要な実行時位置パーミッションがあることを確認する必要があります。

次のようにして、マップで現在地レイヤーを有効にします。

mMap.setMyLocationEnabled(true);

現在地レイヤーが有効な場合、マップの右上に現在地ボタンが表示されます。 ユーザーがボタンをクリックしたときに、端末の現在地がわかっている場合は、カメラのマップの中心が現在地に合わせられます。 現在地は、端末が静止している場合はマップ上に小さい青の点で示され、端末が移動している場合は山形で示されます。

![現在地ボタン](/maps/documentation/android-api/images/mylocationbutton.png "右上の現在地ボタン"

クリックによって、GoogleMap.OnMyLocationButtonClickListener もトリガーされます。

UiSettings.setMyLocationButtonEnabled(false) を呼び出すと、ボタンをまとめて非表示にできます。

現在地レイヤーからはデータが返されないことに注意してください。 プログラムで位置データにアクセスする必要がある場合は、Location API を使用してください。

Google Play サービスの Location API

Google Play サービスの Location API は、Android アプリケーションに位置認識を追加するために推奨される方法です。 これには、次の処理を行うための機能が含まれています。

  • 端末の位置を判別します。
  • 位置の変更をリッスンします。
  • 端末が移動中の場合は、移動モードを判別します。
  • ジオフェンスと呼ばれる、事前定義済みの地理的領域を作成して監視します。

Location API を使用すると、電力効率が高く、位置認識機能を備えたアプリケーションを簡単に作成できます。 Google Maps Android API と同様に、Location API は Google Play サービス SDK の一部として配布されています。 Location API の詳細については、Android トレーニング クラスのアプリに位置認識を追加する または Location API リファレンスをご覧ください。

コードサンプルは、Google Play サービス SDK に含まれています。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。