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