1

我在 Android 4.2 上遇到过这个问题。我有三台设备,一台有 4.1.1,另外两台有 4.2。在 4.1 手机上 getSupportFragmentManager().getMap() 返回一个地图,我可以看到它,我可以找到我的位置等等。但是在另外两个上它返回null。

这是我的地图设置代码:

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

在 4.2 中,最后三行中的每一行都抛出 NullPointerException。在 4.1 上,它们都可以工作。

我找不到,为什么会这样。

PS:谷歌地图在 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

谷歌现在做了一个更方便的方式来使用下面的方法来获取地图

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

     }
});
于 2015-05-05T18:59:21.663 回答