【问题标题】:How to exchange data between FeatureStore and AJAX backend?如何在 FeatureStore 和 AJAX 后端之间交换数据?
【发布时间】:2014-09-04 18:13:21
【问题描述】:

我是 Extjs4.2/OL/Geoext2 开发的新手,我对它应该如何工作感到困惑。

--- 编辑---

我正在尝试编写一个小应用程序来读取 GeoJSON,将读取的特征放在地图上,让用户编辑它们/绘制新的,最后将它们保存回 GeoJSON。

我目前的做法: OpenLayers.Layer.Vector 绑定到 Geoext.data.FeatureStore。 图层读取 GeoJSON,并填充 FeatureStore。

现在我的问题是——如何将用户数据修改后的数据保存到 GeoJSON? 我可以通过 FeatureStore 将数据保存为 JSON,但我没有看到让 FetureStore 保存 GeoJSON 的简单方法。我应该使用矢量图层来保存 GeoJSON,还是尝试添加某种类型的转换以将要素的几何属性添加到 FeatureStore,然后 sync() 存储?

--- 编辑---

已经通过向模型插入另一个属性来完成此操作:

{
  name: 'geom',
  convert: function(value, record) {
    return record.raw.geometry.toString();
  }
}

现在我的 FeatureStore 使用几何保存类似 GeoJSON 的输出,这对我来说没问题。

问题:这样做是否正确?

问候,帕维尔

【问题讨论】:

  • 我们可以看看一些代码吗?
  • 我没有发布任何代码,因为我正在寻找一般问题的答案。我会尝试改写我的问题...

标签: extjs openlayers extjs4.2 geoext


【解决方案1】:

我不是专家,但我认为 GeoExt.data.FeatureStore 的创建是为了与图层同步。因此,如果您执行store.sync(),则不会向您的远程 GeoJSON 数据源发送更新请求。 GeoExt.data.FeatureStore 构造函数首先创建一个proxy: { type: 'memory', ...,因此您的原始代理将被这个替换。要使用 GeoExt.data.FeatureStore,您必须重写它。

所以,我认为最好的方法是使用OpenLayers.Protocol.Script 源,它非常灵活,配置为使用您的远程 GeoJSON 源。使用图层的保存策略,所有更新都将发送到远程源。

问候!

【讨论】:

    猜你喜欢
    • 2021-09-11
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 2017-09-01
    • 1970-01-01
    相关资源
    最近更新 更多