2011-09-26 2 views
5

사용자가 오버레이를 사용하여 Google지도에 다양한 아이콘을 추가 할 수있는 앱을 만들었습니다. 사용자가 앱을 만들 때 오버레이를 저장하여 나중에 앱을 다시 열 때 마커가 계속 표시되도록하려고합니다.
현재 앱을 다시 열면 생성 된 아이콘이 사라집니다. 나는 인터넷을 검색했지만 나중에 사용하기 위해 내 마커/오버레이를 오프라인으로 저장하는 방법을 명확하게 이해하지 못했습니다.추가 된 Google지도 오버레이를 Android 앱에 저장하는 방법은 무엇인가요?

답변

2
그냥 생각

,하지만 당신은 데이터베이스에서 마커를 저장하고지도를 다시 열 때 바로 데이터베이스를 쿼리 다시지도에 넣을 수 있습니다 ...

1

당신은 어떤 영구 저장소를 사용해야합니다. 아마도 SQLite가 가장 좋은 옵션 일 것입니다. 오버레이에는 위도와 경도가 있습니다. 그냥 그들과 함께 당신이 그들과 함께 필요한 모든 데이터를 가져 와서 SQLite 데이터베이스에 넣어. 그런 다음 활동 시작에서 데이터베이스에서 포인트를 가져 와서 맵에 표시하십시오.

3

언급 한대로 some persistent storage을 사용해야합니다. 아마도 데이터베이스가 특정 케이스에서 초과 될 수 있습니다 (경도 - 위도 쌍을 간단히 저장해야하는 경우). 공유 환경 설정이 필요에 맞습니다. 당신은 거의 (읽기 및 추출 데이터의 측면에서) 가장 간단한 해결책이 될 것입니다 저장을 /를 공유 환경 설정에 문자열로 JSONArray 퍼팅이 데이터를 읽을 필요가없는 경우 :

SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); 
    JSONArray jsonArr = new JSONArray(); 
    JSONObject json; 
    for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user 
     json = new JSONObject(); 
     json.put("lat", user_markers.get(i).getLat()); 
     json.put("long", user_markers.get(i).getLong()); 
     jsonArr.put(json); 
    } 
    editor.putString("markers", jsonArr.toString()); 
    editor.commit(); 

당신은/저장이 읽을 필요가있는 경우 데이터를 조금 더 자주 사용하면 SharedPreferences의 값을 분리하기 위해 ID/인덱스를 할당 할 수 있지만 더 복잡한 추출 방법이 필요할 수 있습니다. 예를 들어 :

SharedPreferences.Editor editor = getSharedPreferences("name", 0).edit(); 
    int id; 
    for (int i = 0; i < user_markers.size(); i++) { // here I assume that user_markers is a list where you store markers added by user 
     id = user_markers.get(i).getId(); // some Id here 
     // or simply id = i; 
     editor.putString("markers_lat_" + id, user_markers.get(i).getLat()); 
     editor.putString("markers_long_" + id, user_markers.get(i).getLong()); 
    } 
    editor.commit(); 

모든 후, 당신은 데이터 또는 복잡한 구조의 데이터의 큰 금액을 저장하려는 경우 데이터베이스를 사용하는 것이 좋습니다.

+0

이 나는 ​​또한 내 응용 프로그램 여전히 작동 GR8 :이 트릭을 시도하는 가장 좋은 방법입니다 –

0

SQLite 데이터베이스를 사용하여 사용자 데이터를 저장합니다. 그것들은 단순하고 많은 양의 데이터를 위해 SharedPreferences보다 낫습니다.

More Info

Example

관련 문제