【发布时间】:2012-12-28 10:09:33
【问题描述】:
可能重复:
How do I know the map is ready to get used when using the SupportMapFragment?
我目前正在测试新的 Maps API V2,但我真的很难让它正常工作。
我的问题是 getMap() 总是返回 null。
我已经在 3 个不同的点上测试了调用:
- onCreate()
- onResume()
- 在地图已经在屏幕上可见几秒钟后调用的处理程序中
代码如下:
public class MapActivity extends FragmentActivity {
private SupportMapFragment mMapFragment;
@Override
protected void onCreate(Bundle arg0) {
super.onCreate(arg0);
setupMap();
}
@Override
protected void onResume() {
super.onResume();
setupMap();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
setupMap();
}
}, 5000);
}
private void setupMap() {
if (getSupportFragmentManager().findFragmentById(R.id.fragment) == null) {
mMapFragment = CustomMapFragment.newInstance();
getSupportFragmentManager().beginTransaction()
.add(R.id.map_wrapper, mMapFragment).commit();
}
GoogleMap map = mMapFragment.getMap();
if (map != null) {
mMapFragment.getMap().getUiSettings().setZoomControlsEnabled(true);
mMapFragment.getMap().getUiSettings().setZoomGesturesEnabled(true);
mMapFragment.getMap().setMyLocationEnabled(true);
}
}
我做错了什么?
【问题讨论】:
-
确实很遗憾,我没有通过搜索功能找到这些问题 :( 我将发布我的示例解决方法作为答案。感谢 CommonsWare!
-
首先,您在什么类型的设备上运行此代码?物理设备或模拟器(可能未安装 Play 服务)。
标签: android android-maps google-play-services