OpenLayers 线串

OpenLayers Line String

我有一个协调员列表,我想在 openlayers 地图中显示它,但该线没有在地图中显示。

这是我的代码。有人可以指导我吗?

for (let i = 0; i < list.length - 1; i++) {
    const start_point = [parseInt(list[i].longitude, 10), parseInt(list[i].latitude, 10)];
    const end_point = [parseInt(list[i + 1].longitude, 10), parseInt(list[i + 1].latitude, 10)];

    const feature = new ol.Feature({
      geometry: new ol.geom.LineString([start_point, end_point]),
      name: 'Line'
    });

    const source = new ol.source.Vector({
      features: [feature]
    });

    const layerLines = new ol.layer.Vector({
      source: source,
    });

    this.map.addLayer(layerLines);
  }

您需要将 lat/long 值转换为与地图中的视图相同的投影系统。

由于您没有明确指定地图的投影,它使用 EPSG:3857(参见 ol.view docs

鉴于此,您可以在不指定目标投影的情况下使用 ol.proj.fromLonLat(同样默认使用 EPSG:3857)。

因此您的代码将是:

const feature = new ol.Feature({
  geometry: new ol.geom.LineString([
     ol.proj.fromLonLat(start_point), 
     ol.proj.fromLonLat(end_point)]),
  name: 'Line'
});