OpenLayer:KML 范围丢失并变成 [Infinity、Infinity、-Infinity、-Infinity]?

问题描述 投票:0回答:1

我正在尝试检索我引入 OpenLayer 的 KML 图层的范围。

当我在 QGIS 中打开 KML 图层时,我看到它附加了我想在 OpenLayer 中使用的范围信息。

(注意:范围信息是“正确的”=>符合我的期望)

但是当我使用

VectorSource
format: new KML()
在脚本中加载图层时,范围信息似乎丢失并变成了
[Infinity, Infinity, -Infinity, -Infinity]

import VectorSource from "ol/source/Vector.js";
import KML from "ol/format/KML.js";

const model = new VectorSource({
      url: ".....",
      format: new KML(),
    });

console.log("model");
console.log(model);
console.log("model.getExtent()");
console.log(model.getExtent());

我的问题:有没有办法以编程方式直接从我的 OpenLayer 脚本中检索我在 QGIS 中看到的范围信息(通过读取导入对象的属性,而不是从 QGIS 或其他数据源手动复制粘贴) )?

gis openlayers qgis
1个回答
0
投票

要加载源,您需要将其添加到图层内的地图中

const model = new VectorSource({
      url: ".....",
      format: new KML(),
    });

model.once('featuresloadend', () => {
  console.log(model.getExtent());
});

map.addLayer(
  new VectorLayer({
    source: model,
  })
);

或者获取 URL 并使用 KML 格式解析器读取它

const model = new VectorSource();

fetch( ".....")
  .then((response) => response.text())
  .then((text) => {
    model.addFeatures(
      new KML().readFeatures(text)
    );
    console.log(model.getExtent());
  });
© www.soinside.com 2019 - 2024. All rights reserved.