Как сохранить добавленные наложения Google Maps в приложении для Android? - PullRequest
5 голосов
/ 26 сентября 2011

Я создал приложение, в котором пользователи могут добавлять различные маркеры на Google Maps, используя оверлеи. Я хочу, чтобы приложение сохраняло оверлей, когда пользователь создает его, чтобы при повторном открытии приложения маркеры все равно оставались.
В настоящее время при повторном открытии приложения созданные маркеры исчезают. Я искал в Интернете и не получил четкого понимания того, как сохранить свои маркеры / наложения в автономном режиме для последующего использования.

Ответы [ 4 ]

3 голосов
/ 02 мая 2012

Как уже упоминалось, вам нужно использовать некоторое постоянное хранилище . Возможно, база данных будет избыточной в вашем конкретном случае (если вам просто нужно сохранить кучу пар долгота-широта), и общие предпочтения будут соответствовать вашим потребностям. Если вам редко нужно читать / хранить эти данные, то самым простым (с точки зрения чтения и извлечения данных) будет использование 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, но для этого может потребоваться более сложный метод извлечения. Например:

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

В конце концов, вам следует рассмотреть возможность использования базы данных, если вы планируете хранить большой объем данных или данных сложной структуры.

2 голосов
/ 02 мая 2012

Это просто идея, но вы можете сохранить свои маркеры в базе данных, а когда вы снова откроете карту, просто запросите базу данных и снова поместите ее на карту ...

1 голос
/ 02 мая 2012

Вы должны использовать некоторое постоянное хранилище. SQLite, вероятно, будет лучшим вариантом здесь. Наложения имеют свои значения широты и долготы. Просто получите их и все необходимые данные вместе с ними и поместите все это в базу данных SQLite. Затем в разделе «Активность» получите точки из базы данных и покажите их на карте.

0 голосов
/ 03 мая 2012

Использование базы данных SQLite для сохранения пользовательских данных.Они просты и для большого объема данных лучше, чем SharedPreferences.

Подробнее

Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...