【问题标题】:Writing vector features to local storage/IndexedDB and retrieving将向量特征写入本地存储/IndexedDB 并检索
【发布时间】:2015-04-02 15:57:12
【问题描述】:

我目前正在尝试使用 OpenLayers3 创建一个路线规划应用程序,想知道是否有人有做过类似事情的经验? 我对此很陌生,但到目前为止,我已经设法将我的几何图形保存在本地存储中作为 geoJson;我似乎无法检索它并在我的矢量图层上重新绘制它。 理想情况下,我更喜欢使用本地化的数据库解决方案,但我似乎找不到任何与此相关的文档。

【问题讨论】:

  • IndexedDb 是一个无模式对象存储。创建数据库和对象存储后,就可以开始存储 geoJSON 对象了。试着通读这篇文章,看看你如何继续codeproject.com/Articles/325135/Getting-Started-with-IndexedDB。不过有几点需要注意,它是异步的,如果您以前使用过 javascript 回调,它会有所帮助。
  • 对于本地化数据库,我使用pouchdb。它使使用索引数据库更容易,并增加了同步功能
  • 您是否记得在从本地存储中检索 geojson 后将其解析回对象?并在将其保存到本地存储之前对其进行字符串化?本地存储包含字符串。见this
  • 谢谢你们的回复。 pouchdb 看起来确实是一个可行的解决方案,但是我遇到了第一个障碍,因为我可以在本地保存数据,但似乎无法找到在给定层上重绘它的语法。我的 javascript 有点粗略,但 OpenLayers3 文档确实供不应求:/

标签: local-storage indexeddb geojson web-sql openlayers-3


【解决方案1】:

正如我在评论中所说,感谢大家的意见。解析并不是真正的问题,更确切地说是如何使用检索到的信息生成矢量图层。 我偶然发现了一篇关于为检索到的数据创建加载器函数的文章,这与从外部文件或 Web 服务加载相反。相关代码复制如下。不过对我来说,PouchDB 是要走的路,感谢@Alex,因为我开始阅读它,这就是我需要的所有确认。 ;)

// Load Route Function
$(document).ready(function() {
    if (localStorage.getItem('myFeatures') !== null) {
  var features = JSON.parse(localStorage.getItem('myFeatures'));
  console.log(features);

  var featureSource = new ol.source.ServerVector({
    format: new ol.format.GeoJSON(),
    loader: function(extent, resolution, projection) {
      loadFeatures();
    },
   strategy: function(extent, resolution) {
   // some code
    return [extent];
   },
   projection: "EPSG:25832"
});
}

var loadFeatures = function() {
  featureSource.addFeatures(featureSource.readFeatures(features));
};

var SmallworldLayer = new ol.layer.Vector({
   source: featureSource,
   style: defaultRoute
});
map.addLayer(SmallworldLayer);
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2019-07-14
    • 2012-05-05
    • 2016-03-31
    • 2023-03-29
    • 1970-01-01
    • 2016-08-22
    相关资源
    最近更新 更多