功能不会显示在地图上

时间:2014-10-30 22:18:39

标签: openlayers-3

我一直在尝试Open Layers的新版本(3)。我稍微修改了图标特征示例,因此它会显示一个多边形。我一直在寻找,阅读和尝试几个小时,但无法弄清楚我做错了什么。

我不想使用geoJSON,因为我想动态添加和删除功能。

这是我到目前为止的代码:

<script type="text/javascript"> 
  var point1 = ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857');
  var point2 = ol.proj.transform([35.41, 9.82], 'EPSG:4326', 'EPSG:3857');
  var point3 = ol.proj.transform([33.41, 11.82], 'EPSG:4326', 'EPSG:3857');
  var polyFeat = new ol.Feature({
    geometry: new ol.geom.Polygon([point1, point2, point3])
  });

  var polyStyle = new ol.style.Style({
    fill: new ol.style.Fill({
      color: 'blue'
    }),
    stroke: new ol.style.Stroke({
      color: 'red',
      width: 2
    })
  });

  polyFeat.setStyle(polyStyle);

  var vectorSource = new ol.source.Vector({
    features: [polyFeat]
  });

  var vectorLayer = new ol.layer.Vector({
    source: vectorSource
  });

  var rasterLayer = new ol.layer.Tile({
    source: new ol.source.TileJSON({
      url: 'http://api.tiles.mapbox.com/v3/mapbox.geography-class.jsonp'
    })
  });

  var map = new ol.Map({
    layers: [rasterLayer, vectorLayer],
    target: document.getElementById('map'),
    view: new ol.View({
      center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
      zoom: 3
    })
  });
</script>

为什么多边形没有显示?

1 个答案:

答案 0 :(得分:2)

解决问题的两件小事:

首先,建议关闭多边形,因此声明第四个点的坐标与第一个坐标相同。

var point4 = ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857');

然后,您的几何new ol.geom.Polygon([point1, point2, point3])应为new ol.geom.Polygon([[point1, point2, point3, point4]])

这里重要的事实不是点4加法,而是将数组点转换为点数组数组。请参阅the API,其中说明OpenLayers 3 ol.geom.Polygon构造函数需要Array.<Array.<ol.Coordinate>>