为了账号安全,请及时绑定邮箱和手机立即绑定

OpenLayers 6 + Angular 8:LineString(s)

OpenLayers 6 + Angular 8:LineString(s)

MMTTMM 2022-01-01 20:12:39
我遇到了一个问题,我的 LineString(s) 没有显示在地图上,并且控制台没有发出任何错误。我相信我的代码是正确的,但在涉及 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 每个变量都被正确分配,没什么奇怪的,也没有未定义的 ecc ...
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

在 OL 中,坐标必须先表示为经度,然后是纬度。

尝试交换坐标:

let coords = [[lonA, latA], [lonB, latB]];


查看完整回答
反对 回复 2022-01-01
  • 1 回答
  • 0 关注
  • 360 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号