我已经按照一些在线教程向Android中的Google Maps api添加标记。那里的代码结构与我的代码不同,但是总的来说,我看到它们是在onCreate方法中完成的。下面,我有一个非常基本的代码来尝试在地图中间获取标记,但是,我得到了一个空指针异常。有人知道对此有一个简单的解决方法吗?
这是详细的错误,下面是我的方法。我已将地图声明为全局变量。
java.lang.NullPointerException:尝试调用虚拟方法'com.google.android.gms.maps.model.Marker com.google.android.gms.maps.GoogleMap.addMarker(com.google.android.gms.maps.model .MarkerOptions)'上的空对象引用
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
serviceManager = ServiceManager.getInstance(getActivity());
userID = getString(R.string.mobile_health_client_user_id);
client = MobileIOClient.getInstance(getContext(), userID);
//client = MobileIOClient.getInstance(userID);
map.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Hello world"));
}
我也已经遍历了覆盖onMapReady()的google教程,但是该方法对我也不起作用。我不确定如何在代码中使用它,也无法在线找到足够的资源来帮助我。任何帮助,将不胜感激。
谢谢
您不应该在您的活动或片段的onCreate()方法中与地图对象进行交互。简单的理由是地图可能尚未准备好。处理此问题的正确方法是实现OnMapReadyCallback
接口,并在onMapReady(GoogleMap googleMap)
函数的实现中添加标记。
如果使用MapFragment
vs MapView
,您的解决方案将需要稍有不同,但是总体思路保持不变。
例子:
public class MyActivity extends Activity implements OnMapReadyCallback {
.
.
@Override
public void onMapReady(GoogleMap googleMap) {
map = googleMap; // Set your local instance of GoogleMap for future use
map.addMarker(new MarkerOptions()
.position(new LatLng(0, 0))
.title("Hello world"));
}
.
.
}
如果您使用MapView
,则需要在布局中获取视图的句柄并显式调用map.getMapAsync(this)
以附加onMapReady()
侦听器。
我希望这有帮助!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句