OpenLayers 6 + Angular 8: LineString(s) не отображается на векторном слое (без ошибок от JS)

У меня проблема, когда мои строки LineString не отображаются на карте, а консоль не выдает никаких ошибок.

Я верю, что мой код правильный, но я не настолько разбираюсь в OpenLayers и могу ошибаться.

Вот как я добавляю свой векторный слой на карту

var vectorLayer = new ol.layer.Vector({
      name: 'trailLayer',
      type: "Vector",
      source: new ol.source.Vector({ format: new ol.format.GeoJSON({ featureProjection:"EPSG:3857" }) }),
      zoomMin: 8,
      zoomMax: 18
    });

    this.map.addLayer(vectorLayer);

Чем это я делаю, чтобы добавить новую строку LineString

let layer;
this.map.getLayers().forEach(function (value) { if ( value.get('name') === 'trailLayer') { layer = value; } });
if(layer == null) { return; }

let coords = [[latA, lonA], [latB, lonB]];
let lineString = new ol.geom.LineString(coords);
lineString.transform('EPSG:4326', 'EPSG:3857');

var lineFeature = new ol.Feature({
    name: callsign,
});

lineFeature.setGeometry(lineString);


var lineStyle = new ol.style.Style({
    stroke: new ol.style.Stroke({
        width: trailWidth,
        color: trailColor
    })
});

lineFeature.setStyle(lineStyle);

layer.getSource().addFeature(lineFeature);

Если я попытаюсь использовать source.GetFeatures() он показывает все мои особенности правильно, но я не вижу их на карте.

Я что-то пропустил?

PS Каждая переменная назначена правильно, ничего странного и никакого undefined ecc...

1 ответ

Решение

В OL координаты должны быть сначала выражены как долгота, а затем широта.

Попробуйте поменять местами координаты:

let coords = [[lonA, latA], [lonB, latB]];
Другие вопросы по тегам