【问题标题】:OpenLayers 6.8 : How to get Geojson Vector coordinates?OpenLayers 6.8:如何获取 Geojson 矢量坐标?
【发布时间】:2021-10-12 09:00:21
【问题描述】:

我有一张带有 openlayers 6.8 的基本地图。 我显示来自 geojson 的标记。

geojson 示例:

const geoMoscow = new ol.layer.Vector({
    source: new ol.source.Vector({
        url: './assets/moscow.geojson',
        format: new ol.format.GeoJSON()
    }),
    visible: true,
    title: 'geojson',
    style: new ol.style.Style({
        fill: fillStyle,
        stroke: strokeStyle,
        image: new ol.style.Circle({
            fill: new ol.style.Fill({
                color: [245, 49, 5, 1]
            }),
            radius: 10,
        }),
    })
})

我想获取此 geojson 坐标以供进一步使用。 我一直在阅读许多使用 geojson.getSource().getFeatures() 的代码示例,这些示例允许从每个功能访问 getCoordinates() 方法。

不幸的是 geoMoscow.getSource().getFeatures() 给出了一个空数组。

我显然遗漏了一些关于 openlayers 逻辑的东西。 这似乎完全可行,因为我的 geojson 包含一个带有坐标的要素对象,但我无法访问它。

TLDR:如何从这个 geojson Vector 访问坐标等信息。

【问题讨论】:

    标签: javascript openlayers geojson


    【解决方案1】:

    你必须等到源被加载和解析

    geoMoscow.getSource().on('featuresloadend', function(){
      console.log(geoMoscow.getSource().getFeatures());
    });
    

    在添加到地图之前不会加载源。

    【讨论】:

    • 完美运行。我确定我错过了类似的东西,但将我的代码包装在:window.onload = init; function init() {} 不应该避免这个问题?
    • window.onload 事件在所有最初在您的 html 中的脚本标签和 dom 已加载后触发。您的 geojson 仅在脚本执行并构建 VectorSource 后才开始加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多