javascript - 如何在没有 XHR 的情况下加载 vectorSource

标签 javascript openlayers

使用最新版本的Openlayers,4.3.1,我设置了一个矢量源如下:

this.vectorSource = new ol.source.Vector({
      url: `../assets/data/file.json`,
      format: new ol.format.TopoJSON()
    });

    this.vector = new ol.layer.Vector({
      source: this.vectorSource,
      style: this.style
    });

但在某些情况下,文件需要通过其他功能进行预先处理。

我如何加载 file.json,处理他并在 ol.source.vector 中使用?

我也尝试使用 ajax 响应,其中 dataSource 变量是第一个示例 ../assets/data 中对相同 URL 的 ajax 调用的响应/文件.json

vectorSource = new ol.source.Vector({
        features: (new ol.format.TopoJSON()).readFeatures(dataSource)
      });

最佳答案

这可以很容易地完成。在没有 URL 的情况下配置 ol.source.Vector。相反,您可以自己加载 json 并将其转换为对象

var json = JSON.parse(dataSource);

然后修改JSON对象,最后调用

var features = new ol.format.TopoJSON().readFeatures(dataSource,
    {featureProjection: view.getProjection()});
vectorSource.addFeatures(features);

请注意 featureProjection 选项,这是必需的,除非您的 View 与数据源具有相同的投影。

关于javascript - 如何在没有 XHR 的情况下加载 vectorSource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988289/

相关文章:

javascript - 是什么原因导致此 Vue 计算器应用程序中的模板变量更新失败?

javascript - NativeScript-audio 更换音乐轨道的问题

javascript - 在传递到 OpenLayers 3 中样式函数的第一行上绘制箭头

javascript - 动态改变正文内容

javascript - 将提示输入保存到数组中并从中读取

JavaScript 导致大量内存泄漏

javascript - 如何在开放图层中的开放街道 map 上使用不同的主题?

openlayers - 在开放层中标记轮廓3.17.1

javascript - 我如何最好地构建一个以大型重型非 Angular 库为中心的 Angular 应用程序(本例为 : openlayers map)

postgresql - PostGIS:找到最接近给定点的几何图形