0
누군가가 나를 도울 수 있는지 궁금 해서요, 새로 생성 된 표식을 ConcurrentHashMap에 저장하려고합니다. 참조를 저장하는 데 문제가없는 것 같지만 앱을 검색하려고 할 때 충돌이 발생하고 NullPointer 예외가 발생하면 아래에 마커를 저장하고 검색하는 방법이 나와 있습니다.지도 표식 저장 참조
mMarkers
에 저장이 그것을 저장하는 키로서 표지 된 LatLng 위치를 사용하고
map.setOnMapLongClickListener(new OnMapLongClickListener() {
@Override
public void onMapLongClick(LatLng point) {
Marker marker = mMarkers.get(point);
marker.remove(); //fails here
mMarkers.remove(point);
}
});
실패한 곳을 분리 private Map<LatLng, Marker> mMarkers = new ConcurrentHashMap<LatLng, Marker>();
LatLng currPos = new LatLng(map.getCameraPosition().target.latitude,map.getCameraPosition().target.longitude);
Marker marker = map.addMarker(new MarkerOptions()
.position(currPos)
);
mMarkers.put(currPos, marker);
locationCount++;
SharedPreferences.Editor editor = settings.edit();
editor.putString("mlat"+ Integer.toString((locationCount-1)), Double.toString(marker.getPosition().latitude));
editor.putString("mlng"+ Integer.toString((locationCount-1)), Double.toString(marker.getPosition().longitude));
editor.putInt("locationCount", locationCount);
editor.putString("mzoom", Float.toString(map.getCameraPosition().zoom));
editor.commit();
된다.
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)
어디서나지도에 긴 클릭 수
하지만이 경우 사용자는 테스트 중이므로 마커를 누르면됩니다. 그러면 더 나은 방법을 제안 할 수 있습니까? – Pheonix2105
신경 쓰지 마시오, 네가 뭘보고있는 지 알았어. 이제 OnMarkerClick Listener에 추가 했어. 고마워. – Pheonix2105