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