首页 > 解决方案 > 在地图中搜索图层要素时,坐标返回空

问题描述

当我尝试通过按钮事件使用 layer.getSource().getFeatures() 在 OL 地图中搜索图层要素时,这些要素会返回其坐标为空:

flatCoordinates: []

这一层包含线串特征,但是当我尝试用另一个层做同样的事情时,这次是Point几何,坐标返回了预期的正确值。这个问题只发生在LineString图层上。

我已经尝试使用 Promise 来等待变量的填充,我还尝试使用 if (layer.getSource().getState() === 'ready') 在执行之前检查函数的状态,但是考虑到按钮事件是在所有功能都已加载后发生的,这似乎不是问题。

所有要素都通过存储加载并在地图上创建,地图以正确的坐标返回并正确显示。如果我在加载后尝试获取这个特征的数据,我可以完美地观察到坐标的数据。问题仅在于事件的调用。

目前获取特征的代码是:

this.exportFeaturesSubscription = this.datashare.exportFeaturesObservable().subscribe(element => {
    // Get array of features
    let points = this.vectorPoint.getSource().getFeatures(); // Return with correct coordinates
    let lines = this.pathsLayer.getSource().getFeatures(); // Return with empty coordinates
});

我需要他们调用 writeFeatures(),以便能够创建和导出 KML 文件。我将一个特征数组传递给这个函数,但是只有 LineString 类型的特征没有坐标返回,所以我收到了这个错误:

断言 34 - 无效的几何布局。必须是 XY、XYZ、XYM 或 XYZM。

我必须再次指出,在调用此导出函数之前,这些 LineString 类型的相同功能已完全加载并显示在地图上。

标签: typescriptopenlayersopenlayers-6

解决方案


推荐阅读