簡體   English   中英

向 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);

由於圖層未顯示,代碼有什么問題嗎?

編輯:我已經實施了馬克的建議,這是解決方案:

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 轉換為 map 投影

new ol.geom.LineString(coordinates).transform('EPSG:4326', map.getView().getProjection())

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM