0

このチュートリアルに従って、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 値。

前もって感謝します。

4

1 に答える 1