OpenLayers 线串
OpenLayers Line String
我有一个协调员列表,我想在 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);
}
您需要将 lat/long 值转换为与地图中的视图相同的投影系统。
由于您没有明确指定地图的投影,它使用 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'
});
我有一个协调员列表,我想在 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);
}
您需要将 lat/long 值转换为与地图中的视图相同的投影系统。
由于您没有明确指定地图的投影,它使用 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'
});