OpenLayers Line String

时间:2018-04-16 12:04:43

标签: openlayers openlayers-3

我有一个协调员列表,我想在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);
  }

1 个答案:

答案 0 :(得分:2)

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

由于您没有明确指定地图的投影,因此它使用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'
});