绘制带有有角度的开放图层的线串时出错



我正在使用最新版本的OpenLayers(6.3.1(和angular。

我的目标是从数组的坐标中绘制一条线

例:

let coordinates = [
[20.4511, 48.9109],
[20.4512, 48.9110],
[20.4514, 48.9110],
[20.4515, 48.9111]
];

我在项目中添加了一个开放图层地图,然后将切片和矢量图层设置为该地图,但是当我想使用以下代码在循环中绘制 LineString 时:

var lineGeometry = new LineString([olProj.fromLonLat(coordinates[i-1]), olProj.fromLonLat(coordinates[i])]);
var feature = new Feature({
geometry: lineGeometry 
});
this.myVectorSource.addFeature(feature);

我收到一个错误:错误:未实现的抽象方法。

在"getExtent(("函数中来自"lineGeometry"变量。

我试图控制台日志"lineGeometry"变量,它有"范围"成员变量,但它的所有组件都是无穷大。(我假设"getExtent(("是"extent"成员变量的获取功能(

但是,如果我尝试在点之间绘制点而不是线,我会得到预期的结果(点在地图上呈现(

var pointGeometry = new Point(olProj.fromLonLat(coordinates[i]));
var feature = new Feature({
geometry: pointGeometry 
});
this.myVectorSource.addFeature(feature);

有关代码的更多详细信息,请下载:

https://plnkr.co/edit/Ih6mCanmpqDmdg2q?open=lib%2Fscript.js&deferRun=1&preview

首先,你导入LineString是错误的 改变

import LineString from 'ol/geom/Geometry';

import LineString from 'ol/geom/LineString';

线串由所有坐标组成,因此请将其从 for 循环中删除。您可以使用几何体的变换方法从 EPSG:4326 (LonLat( 转换为视图投影

drawLine(coordinates, drawDots)
{
if(drawDots)
{
for(var i = 0; i < coordinates.length; i++)
{
var pointGeometry = new Point(olProj.fromLonLat(coordinates[i]));
var feature = new Feature({
geometry: pointGeometry 
});
this.myVectorSource.addFeature(feature);
}
}
else
{
var lineGeometry = new LineString(coordinates).transform('EPSG:4326', this.myMap.getView().getProjection());
console.log(lineGeometry)
var feature = new Feature({
geometry: lineGeometry 
});
this.myVectorSource.addFeature(feature);
}
}

相关内容

  • 没有找到相关文章

最新更新