使用openLayers

时间:2016-08-08 07:02:35

标签: javascript polygon openlayers openlayers-3

我有一组坐标,我想用它们用OpenLayers绘制多边形。坐标如下:

[["50.12345","30.12345"],["40.12345","20.12345"],["60.12345","10.12345"],["70.12345","90.12345"]]

如何用这些坐标绘制多边形?我正在尝试以下但它似乎不起作用:

var coords = "[["50.12345","30.12345"],["40.12345","20.12345"],["60.12345","10.12345"],["70.12345","90.12345"]]";
var polygon = new ol.geom.Polygon([coords]);

polygon.transform('ESPG:4326','ESPG:3857');
var feature = new ol.feature(polygon);
var vectorSource = new ol.source.Vector({});
vectorSource.addFeature(feature);
layer = new ol.layer.Vector({
source: vectorSource});

map.addLayer(layer);

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:1)

// instead of this - a string
var coords = "[["50.12345","30.12345"],["40.12345","20.12345"],["60.12345","10.12345"],["70.12345","90.12345"]]";

// change to an array of arrays - remove the beginning quotes
var coords = [["50.12345","30.12345"],["40.12345","20.12345"],["60.12345","10.12345"],["70.12345","90.12345"]];

// and then you have to convert these string coordinates to number type
coords.map(function(coord){
  return [parseFloat(coord[0]), parseFloat(coord[1])];
});

继续其余部分 - 注意ol.Feature是用大写字母写的。