如何正确使用OnMapLoadedCallback以便从MapFragment引用谷歌地图

时间:2014-12-14 08:51:18

标签: android google-maps-android-api-2

我正在尝试使用MapFragment,而不是用于API 11及更低版本的SupportMapFragment。

问题是我遇到了地图参考,所以我可以设置一些标记。我已经尝试了一切,从扩展MapFragment到以各种方式使用回调,几乎读取所有线程(几乎所有线程都处理SupportMapFragment),无论我得到什么空指针异常。

所以,我已经将地图片段添加到我的活动中(添加了这个工程图):

com.google.android.gms.maps.MapFragment map =  new com.google.android.gms.maps.MapFragment();

activity.getFragmentManager().beginTransaction()
.add(activity.findViewById(R.id.flFrame).getId(), map)
.commit();

如何获取地图参考和设置标记?

1 个答案:

答案 0 :(得分:2)

如果您使用的是Google Play Services 6.5或更高版本,则现在有一个名为getMapAsync的getMap方法的异步版本。从MapFragment文档:

  

必须使用getMapAsync(OnMapReadyCallback)获取GoogleMap。该类自动初始化地图系统和视图。

您可以在onMapReady callback中执行与地图相关的所有设置。在该回调中返回给您的GoogleMap对象永远不会为null:

  

在MapFragment或MapView对象上设置此接口的实例后,当地图准备好使用时会触发onMapReady(GoogleMap)方法并提供GoogleMap的非空实例。