このチュートリアルに従って、Googleマップを備えたアプリがあります。このチュートリアルに従って、ユーザーの現在の場所も取得しています。
どちらも 09/15 の時点で最新の API を使用しています。
Google マップは、ビュー内のフラグメント内にあります。public void onMapReady(GoogleMap map)
関数内からユーザーの現在の場所をマップにロードして、失敗した結果と多くのNullPointerExceptionsのみを取得しようとしました。何かのようなもの...
@Override
public void onMapReady(GoogleMap map) {
mMap = map;
mMap.setMyLocationEnabled(true);
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
mLoadLocation = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude());
if(mLastLocation != null){
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mLoadLocation, 18.0f));
}else{
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(37.422611, -122.0840577), 18.0f));
}
}
ただし、mLastLocation
常に NULL を返します。そこで、次のようにmoveCamera
呼び出しをに移動しましたonConnected
@Override
public void onConnected(Bundle bundle) {
mLastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (mLastLocation != null) {
mLoadLocation = new LatLng(mLastLocation.getLatitude(), mLastLocation.getLongitude());
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(mLoadLocation, 18.0f));
} else {
Toast.makeText(this, "No Location", Toast.LENGTH_LONG).show();
}
}
これは、まさに私が望んでいるように、魅力的に機能します。しかし、マップ ビューは呼び出されるまでに常に準備ができているonConnected
でしょうか? それとも、これはデバイスごとのものですか?アプローチに関係なく、機能を維持したい。
ユーザーの現在の場所でマップを開始するために見つけたすべての SO メソッドを試しましたが、どれも機能しませんでした。多くのクラッシュと NULL 値。
前もって感謝します。