作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我创建了一个应用程序,用户可以在其中使用叠加层在谷歌地图上添加各种标记。我希望应用程序在用户创建叠加层时保存它,这样当他们稍后重新打开应用程序时,标记仍然存在。
目前,只要重新打开应用程序,创建的标记就会消失。我已经在互联网上搜索过,但并没有清楚地了解如何离线保存我的标记/叠加层以供日后使用。
最佳答案
如前所述,您需要使用 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();
如果您需要更频繁地读取/存储此数据,那么您可以分配 ids/索引来分隔 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();
毕竟,如果您计划存储大量数据或结构复杂的数据,您应该考虑使用数据库。
关于android - 如何在 Android 应用程序中保存添加的谷歌地图叠加层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7549656/
leaflet:一个开源并且对移动端友好的交互式地图 JavaScript 库 中文文档: https://leafletjs.cn/reference.html 官网(英文): ht
我是一名优秀的程序员,十分优秀!