Android 保存地图标记引用
我想知道是否有人可以帮助我,我正在尝试在ConcurrentHashMap中保存对新创建的标记的引用,我似乎在存储引用时没有问题,但当我尝试检索它时,应用程序崩溃并抛出NullPointer异常,下面是我如何存储和检索我的标记 将其存储在Android 保存地图标记引用,android,google-maps,Android,Google Maps,我想知道是否有人可以帮助我,我正在尝试在ConcurrentHashMap中保存对新创建的标记的引用,我似乎在存储引用时没有问题,但当我尝试检索它时,应用程序崩溃并抛出NullPointer异常,下面是我如何存储和检索我的标记 将其存储在mMarkers中,这是私有映射mMarkers=new ConcurrentHashMap() 在出现故障时将其删除 map.setOnMapLongClickListener(new OnMapLongClickListener() { @
mMarkers
中,这是私有映射mMarkers=new ConcurrentHashMap()代码>
在出现故障时将其删除
map.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
Marker marker = mMarkers.get(point);
marker.remove(); //fails here
mMarkers.remove(point);
}
});
我使用标记的位置作为存储它的键
04-06 16:52:05.535: E/AndroidRuntime(26601): FATAL EXCEPTION: main
04-06 16:52:05.535: E/AndroidRuntime(26601): java.lang.NullPointerException
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.grim.pipboid.FragmentMap$1.onMapLongClick(FragmentMap.java:154)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.google.android.gms.maps.GoogleMap$7.onMapLongClick(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.google.android.gms.maps.internal.j$a.onTransact(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Binder.transact(Binder.java:310)
04-06 16:52:05.535: E/AndroidRuntime(26601): at euq.a(SourceFile:93)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.c.j.b(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.ay.an.c(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.ay.bc.onLongPress(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.g.onLongPress(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.h.c(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.i.handleMessage(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Looper.loop(Looper.java:137)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.app.ActivityThread.main(ActivityThread.java:5227)
04-06 16:52:05.535: E/AndroidRuntime(26601): at java.lang.reflect.Method.invokeNative(Native Method)
04-06 16:52:05.535: E/AndroidRuntime(26601): at java.lang.reflect.Method.invoke(Method.java:511)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-06 16:52:05.535: E/AndroidRuntime(26601): at dalvik.system.NativeStart.main(Native Method)
感谢您阅读用户可以长时间单击地图上的任何位置。它不必位于现有标记的精确纬度和经度。因此,您的LatLng
在HashMap
中不存在,但在这种情况下,用户不存在,因为我只是在测试并按下标记。你能提出一个更好的方法吗?没关系,我明白你的意思了,我已经把它添加到了OnMarkerClick的听众中,谢谢你。
04-06 16:52:05.535: E/AndroidRuntime(26601): FATAL EXCEPTION: main
04-06 16:52:05.535: E/AndroidRuntime(26601): java.lang.NullPointerException
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.grim.pipboid.FragmentMap$1.onMapLongClick(FragmentMap.java:154)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.google.android.gms.maps.GoogleMap$7.onMapLongClick(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.google.android.gms.maps.internal.j$a.onTransact(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Binder.transact(Binder.java:310)
04-06 16:52:05.535: E/AndroidRuntime(26601): at euq.a(SourceFile:93)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.c.j.b(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.ay.an.c(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.ay.bc.onLongPress(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.g.onLongPress(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.h.c(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at maps.bo.i.handleMessage(Unknown Source)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Handler.dispatchMessage(Handler.java:99)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.os.Looper.loop(Looper.java:137)
04-06 16:52:05.535: E/AndroidRuntime(26601): at android.app.ActivityThread.main(ActivityThread.java:5227)
04-06 16:52:05.535: E/AndroidRuntime(26601): at java.lang.reflect.Method.invokeNative(Native Method)
04-06 16:52:05.535: E/AndroidRuntime(26601): at java.lang.reflect.Method.invoke(Method.java:511)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
04-06 16:52:05.535: E/AndroidRuntime(26601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
04-06 16:52:05.535: E/AndroidRuntime(26601): at dalvik.system.NativeStart.main(Native Method)