向 OpenLayers 6 添加功能
add feature to OpenLayers 6
我正在尝试使用 OpenLayers 6 将几何图形 LineString 添加到 VectorLayers,但失败了。感谢您的帮助。
这是我的代码
var coordinates = [
[new ol.geom.Point(103.8797182, 1.3160559)],
[new ol.geom.Point(103.8800485, 1.3161336)],
[new ol.geom.Point(103.8800889, 1.3161672)],
[new ol.geom.Point(103.8801166, 1.3162658)],
[new ol.geom.Point(103.8798829, 1.3171543)],
];
console.log(coordinates);
layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [
new ol.Feature({
geometry: new ol.geom.LineString(coordinates),
name: "Line",
}),
],
}),
style: function (feature) {
console.log(feature.getGeometry().getType());
return styles[feature.getGeometry().getType()];
},
});
powerMap.addLayer(layer);
是不是代码有问题,图层没有显示出来
编辑:
我已经实施了 Mark 的建议,这里是解决方案:
var coordinates = [
[ 103.7960334725309, 1.4494121393815099 ],
[ 103.79617186914557, 1.4491070600247167 ],
[ 103.79642909728881, 1.4489874603770377 ],
[ 103.79664709373664, 1.4489591347536637 ],
[ 103.79904789809408, 1.4501025693183976 ],
[ 103.79917449669307, 1.449834325824822 ]
];
var lines = new ol.geom.LineString(coordinates).transform('EPSG:4326', powerMap.getView().getProjection());
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [
new ol.Feature({
geometry: lines,
name: "Line",
}),
],
}),
style: function (feature) {
console.log(feature.getGeometry().getType());
return styles[feature.getGeometry().getType()];
},
});
powerMap.addLayer(layer);
坐标应该是一个坐标数组,而不是一个点几何数组
var coordinates = [
[103.8797182, 1.3160559],
[103.8800485, 1.3161336],
[103.8800889, 1.3161672],
[103.8801166, 1.3162658],
[103.8798829, 1.3171543],
];
您可能还需要将 LineString 转换为地图投影
new ol.geom.LineString(coordinates).transform('EPSG:4326', map.getView().getProjection())
我正在尝试使用 OpenLayers 6 将几何图形 LineString 添加到 VectorLayers,但失败了。感谢您的帮助。
这是我的代码
var coordinates = [
[new ol.geom.Point(103.8797182, 1.3160559)],
[new ol.geom.Point(103.8800485, 1.3161336)],
[new ol.geom.Point(103.8800889, 1.3161672)],
[new ol.geom.Point(103.8801166, 1.3162658)],
[new ol.geom.Point(103.8798829, 1.3171543)],
];
console.log(coordinates);
layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [
new ol.Feature({
geometry: new ol.geom.LineString(coordinates),
name: "Line",
}),
],
}),
style: function (feature) {
console.log(feature.getGeometry().getType());
return styles[feature.getGeometry().getType()];
},
});
powerMap.addLayer(layer);
是不是代码有问题,图层没有显示出来
编辑: 我已经实施了 Mark 的建议,这里是解决方案:
var coordinates = [
[ 103.7960334725309, 1.4494121393815099 ],
[ 103.79617186914557, 1.4491070600247167 ],
[ 103.79642909728881, 1.4489874603770377 ],
[ 103.79664709373664, 1.4489591347536637 ],
[ 103.79904789809408, 1.4501025693183976 ],
[ 103.79917449669307, 1.449834325824822 ]
];
var lines = new ol.geom.LineString(coordinates).transform('EPSG:4326', powerMap.getView().getProjection());
var layer = new ol.layer.Vector({
source: new ol.source.Vector({
features: [
new ol.Feature({
geometry: lines,
name: "Line",
}),
],
}),
style: function (feature) {
console.log(feature.getGeometry().getType());
return styles[feature.getGeometry().getType()];
},
});
powerMap.addLayer(layer);
坐标应该是一个坐标数组,而不是一个点几何数组
var coordinates = [
[103.8797182, 1.3160559],
[103.8800485, 1.3161336],
[103.8800889, 1.3161672],
[103.8801166, 1.3162658],
[103.8798829, 1.3171543],
];
您可能还需要将 LineString 转换为地图投影
new ol.geom.LineString(coordinates).transform('EPSG:4326', map.getView().getProjection())