Posts Tagged ‘GoogleMap’

FusedLocationApiで現在位置を取得(Android)

2015年5月17日

GoogleMap.OnMyLocationChangeListener なるものを使おうと思ったのですが、APIのドキュメントを見ると 、このInterfaceは”Deprecated” なので FusedLocationApi を使うように、と書いてあり、素直に従うことにします。

FusedLocationApi を利用するために、まずGoogleApiClientを作成します。

mClient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mClient.connect();

この例では、呼び出し元クラスにGoogleApiClient.ConnectionCallbacksとGoogleApiClient.OnConnectionFailedListenerを実装し、Connectionの成否をコールバックで受け取るようにしています。GoogleApiClientのConnectが成功したら、FusedLocationApi.requestLocationUpdates() をコールします。Updateされた情報を受け取るために、呼び出し元クラスにLocationListener も実装しておきます。

//GoogleApiClient.ConnectionCallbacks
public void onConnected (Bundle connectionHint)
{
LocationServices.FusedLocationApi.requestLocationUpdates(mClient, LocationRequest.create(), this);
}

位置情報が更新されるとLocationListener.onLocationChanged() が呼び出されるので、そこで位置情報を取得します。下の例では、この位置情報を元にGoogleMapの表示位置を移動させています。

//LocationListener
public void onLocationChanged (Location location)
{
LatLng ll = new LatLng(location.getLatitude(), location.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(ll, 13));

}

参照リンク
Receiving Location Updates
Making Your App Location-Aware

GoogleMapを使う(Android)

2015年5月12日

GoogleMapを使うアプリを作成してみました。

Android StudioのプロジェクトテンプレートにすでにMapアプリが用意されているので、これを使ってみました。しかし、そのまま実行してみると真っ白の画面しか表示されません。

ログをよく見ると以下のエラーがでています。

E/Google Maps Android API﹕ Failed to load map. Error contacting Google servers. This is probably an authentication issue (but could be due to network errors).

いろいろ探していると、res/values/google_maps_api.xml というファイルに『Google Maps API keyを取得してセットする必要が有る」旨が書いてありました。そこに書いてあった通りの手順で、Keyは簡単に取得できました。その値を google_maps_api.xml にセットすると、無事にマップが表示されました。

マップの初期画面

マップの初期画面

右上のボタンにタッチすると現在位置に移動します。(真ん中の青い点)

現在位置を表示

現在位置を表示

次は最初に現在位置を取得して表示できるようにしてみます。