0

我是 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 的输出,这对我来说没问题。

问题:这样做是否正确?

问候, 帕维尔

4

1 回答 1

1

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

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

问候!

于 2014-09-16T12:46:42.733 回答