2014-04-06 3 views
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) 

어디서나지도에 긴 클릭 수

답변

0

사용자를 읽어 주셔서 감사합니다. 기존 마커의 정확한 위도와 경도에있을 필요는 없습니다. 따라서 LatLngHashMap에 없습니다.

+0

하지만이 경우 사용자는 테스트 중이므로 마커를 누르면됩니다. 그러면 더 나은 방법을 제안 할 수 있습니까? – Pheonix2105

+0

신경 쓰지 마시오, 네가 뭘보고있는 지 알았어. 이제 OnMarkerClick Listener에 추가 했어. 고마워. – Pheonix2105