Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Local storage 将向量特征写入本地存储/索引数据库并检索_Local Storage_Indexeddb_Geojson_Web Sql_Openlayers 3 - Fatal编程技术网

Local storage 将向量特征写入本地存储/索引数据库并检索

Local storage 将向量特征写入本地存储/索引数据库并检索,local-storage,indexeddb,geojson,web-sql,openlayers-3,Local Storage,Indexeddb,Geojson,Web Sql,Openlayers 3,我目前正在尝试使用OpenLayers3创建一个路线规划应用程序,我想知道是否有人有过类似的经验? 我对这一点相当陌生,但到目前为止,我已经成功地将我的几何体保存在本地存储中,作为geoJson;我似乎无法检索到它并在向量层上重新绘制它。 理想情况下,我更喜欢使用本地化的db解决方案,但我似乎找不到任何与此相关的文档。正如我在评论中所说,感谢大家的投入。解析并不是真正的问题,更多的是如何用检索到的信息生成向量层。 我偶然发现了一篇文章,其中谈到为检索到的数据创建加载程序函数,这与从外部文件或we

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

正如我在评论中所说,感谢大家的投入。解析并不是真正的问题,更多的是如何用检索到的信息生成向量层。 我偶然发现了一篇文章,其中谈到为检索到的数据创建加载程序函数,这与从外部文件或web服务加载相反。下面复制了相关代码。不过对我来说,PockDB是一条路要走,多亏了@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);
});

IndexedDb是一个无模式的对象存储。创建数据库和对象存储后,就可以开始存储geoJSON对象了。试着通读这篇文章,看看你是怎么做的。不过需要注意的是,它是异步的,如果您以前使用过javascript回调,它会有所帮助。它使使用索引数据库变得更容易,并增加了同步功能您是否记得在从本地存储检索geojson后将其解析回对象?在将其保存到本地存储之前对其进行字符串化?本地存储包含字符串。谢谢你们的回复,伙计们。PockDB看起来确实是一个可行的解决方案,但我遇到了第一个障碍,因为我可以在本地保存数据,但似乎找不到在给定层上重新绘制数据的语法。我的javascript有点粗略,但OpenLayers3文档非常短缺:/jsFIDLE: