我正在尝试检索我引入 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 或其他数据源手动复制粘贴) )?
要加载源,您需要将其添加到图层内的地图中
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());
});