2011-09-26 12 views
5

Creé una aplicación en la que los usuarios pueden agregar varios marcadores en los mapas de Google utilizando superposiciones. Quiero que la aplicación guarde la superposición cuando el usuario la cree, de modo que cuando vuelvan a abrir la aplicación más adelante, los marcadores seguirán presentes.
Actualmente, cada vez que se vuelve a abrir la aplicación, los marcadores creados desaparecen. He buscado en Internet y no tengo una comprensión clara de cómo guardar mis marcadores/superposiciones sin conexión para su uso posterior.¿Cómo guardar las superposiciones adicionales de google maps en una aplicación de Android?

Respuesta

2

Es sólo una idea, pero se puede guardar los marcadores en la base de datos y cuando vuelva a abrir su mapa del mismo consultar la base de datos y lo puso en el mapa de nuevo ...

1

se debe usar algún almacenamiento persistente. SQLite probablemente sea la mejor opción aquí. Las superposiciones tienen su lat y lng. Solo tiene que obtenerlos junto con los datos que necesite junto con ellos y ponerlos todos en la base de datos SQLite. Luego, en Activity start, obtén los puntos de la base de datos y muéstralos en el mapa.

3

Como se mencionó, necesita usar some persistent storage. Quizás, la base de datos sería un exceso en su caso particular (si simplemente necesita guardar un grupo de pares de latitud y longitud), y las Preferencias compartidas se adaptarían a sus necesidades. Si rara vez necesita leer/guardar estos datos, a continuación, poner JSONArray como una cadena de Preferencias compartidos sería la solución más simple (en términos de lectura y extracción de datos):

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(); 

Si usted necesita leer/tienda esta datos un poco más a menudo, entonces puede asignar ids/indexes para separar los valores de SharedPreferences, pero esto puede requerir un método de extracción más complicado. Por ejemplo:

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(); 

Después de todo, usted debe considerar el uso de la base de datos si va a almacenar gran cantidad de datos o datos de estructura complicada.

+0

esta es la mejor manera también he intentado este truco en mi aplicación gr8 sigue trabajando :) –

0

Utilice una base de datos SQLite para guardar los datos del usuario. Son simples y para una gran cantidad de datos son mejores que las Preferencias Compartidas.

More Info

Example

Cuestiones relacionadas