我遇到了一个问题,我的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()
,它会正确显示我的所有功能,但我在地图上看不到它们。
我是不是错过了什么?
p.S.每个变量都被正确分配,没有什么奇怪的,也没有未定义的ecc。。。
在OL中,坐标必须先表示为经度,然后表示为纬度。
尝试交换坐标:
let coords = [[lonA, latA], [lonB, latB]];