1

Android 4.2 でこの問題に遭遇しました。私は 3 つのデバイスを持っており、1 つには 4.1.1 があり、2 つには 4.2 があります。4.1 の電話では、getSupportFragmentManager().getMap() が地図を返し、それを見ることができ、自分の場所などを見つけることができます。しかし、別の 2 つでは null を返します。

マップ設定に関する私のコードは次のとおりです。

mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.setMyLocationEnabled(true);
mMap.getUiSettings().setMyLocationButtonEnabled(false);
mMap.setOnMyLocationChangeListener(this);

4.2 では、最後の 3 行のそれぞれが NullPointerException をスローします。4.1では、それらすべてが機能します。

なぜそれが起こるのか、私は見つけることができません。

PS: Google マップは 4.2 でうまく動作します。また、「現在地」ボタンも機能します。PS2: [位置情報にアクセス] の設定で、[GPS サテライト] と [Wi-Fi & モバイル ネットワークの位置情報] がオンになっています。

4

2 に答える 2

3

Google Play サービスがインストールされているかどうかを確認します。Map コントローラーが開始されるまで、しばらく待つ必要があるかもしれません。

mHandler = new Handler();
mHandler.post(new Runnable() {  
            @Override
            public void run() {
                GoogleMap map = getMap();
                if (map != null) {
                    map.setMyLocationEnabled(true);
                    // INIT HERE
                    map.getUiSettings().setMyLocationButtonEnabled(false);
                    // ...

                } else mHandler.post(this);
            }
        });
于 2013-06-07T08:38:12.647 に答える
1

Google は、次の方法を使用して地図を取得するためのより便利な方法を作成しました。

myMapFragment.getMapAsync(new OnMapReadyCallback) {
     @Override
     public void onMapReady(GoogleMap googleMap) {
         myMap = googleMap;
         // Put your code here

     }
});
于 2015-05-05T18:59:21.663 に答える