0

ログインユーザーをGoogleマップに表示し、ユーザーの場所の詳細(緯度と経度)を取得するコードは次のとおりです

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.start);
    googleMap = ((MapFragment) getFragmentManager().findFragmentById(
            R.id.map)).getMap();
    googleMap.setMyLocationEnabled(true);
    // Creating location manager and location classes instances
    locationManager = (LocationManager) this
            .getSystemService(LOCATION_SERVICE);
     location = locationManager
            .getLastKnownLocation(LocationManager.GPS_PROVIDER);
     CameraPosition cameraPosition = new CameraPosition.Builder().target(
                new LatLng(location.getLatitude(), location.getLongitude())).zoom(9).build();

googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

ここでデバッグして、マップ上にユーザーを正常に表示できるようにしましたが、場所の詳細を取得するためにnull poiner例外が発生しました.Androidモバイルで作業しています(設定が構成されています)が、nullポインタ例外が発生しない理由がわかりません。適切な解決策を提案してください。 Wi-Fi接続を使用しています。)

4

2 に答える 2

1

おそらく、呼び出した時点で場所がないため、getLastKnownLocationnull になっています。そのため、場所オブジェクトを使用する前に、それが null でないことを確認する必要があります。例えばif(location != null)

より良い結果が得られるように、新しいLocation APIまたは組み込みの Google マップ ロケーション マネージャーを使用することを検討する必要があります。

于 2013-09-27T20:18:57.080 に答える
1

素敵な GPS トラッカー ガイド: http://www.androidhive.info/2012/07/android-gps-location-manager-tutorial/

onLocationChanged に this.mLocation = location を追加するだけで済みました


ビューが完全に作成されていないため、googleMap は null になる可能性があります。

電話で GPS が有効になっていない場合、location は null になる可能性があります。

この件に関するいくつかのガイドを検索してフォローしてください。 

于 2013-09-27T20:24:19.207 に答える