【问题标题】:How to save added google maps overlays in an android app?如何在安卓应用中保存添加的谷歌地图覆盖?
【发布时间】:2011-09-26 00:44:11
【问题描述】:

我创建了一个应用程序,用户可以在其中使用叠加层在谷歌地图上添加各种标记。我希望应用程序在用户创建叠加层时保存它,以便他们稍后重新打开应用程序时标记仍然存在。
目前,无论何时重新打开应用程序,创建的标记都消失了。我已经在互联网上搜索过,但对如何离线保存我的标记/覆盖以供以后使用还没有清楚的了解。

【问题讨论】:

    标签: android google-maps


    【解决方案1】:

    如前所述,您需要使用some persistent storage。也许,在您的特定情况下,数据库将是多余的(如果您只需要保存一堆经纬度对),并且共享首选项将满足您的需求。如果您很少需要读取/存储这些数据,那么将 JSONArray 作为字符串放入 Shared Preferences 将是最简单的(就读取和提取数据而言)解决方案:

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

    如果您需要更频繁地读取/存储这些数据,那么您可以分配 ids/indexes 来分隔 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();
    

    毕竟,如果你打算存储大量数据或结构复杂的数据,你应该考虑使用数据库。

    【讨论】:

    • 这是最好的方法,我也在我的应用程序中尝试过这个技巧,仍然可以工作 gr8 :)
    【解决方案2】:

    这只是一个想法,但您可以将标记保存在数据库中,当您重新打开地图时,只需查询数据库并将其再次放在地图上...

    【讨论】:

      【解决方案3】:

      您应该使用一些持久性存储。 SQLite 可能是这里的最佳选择。叠加层有它们的 lat 和 lng。只需获取它们以及您需要的任何数据,然后将所有这些都放入 SQLite 数据库中。然后在活动开始时从数据库中获取点并在地图上显示它们。

      【讨论】:

        【解决方案4】:

        使用 SQLite 数据库保存用户数据。它们很简单,并且对于大量数据,它们比 SharedPreferences 更好。

        More Info

        Example

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多