【问题标题】:Displaying a polygon in OpenLayers map在 OpenLayers 地图中显示多边形
【发布时间】:2019-06-05 18:29:05
【问题描述】:

我想在(经度、纬度)点上画一个多边形:

      var maxPoint = [36.283, -114.368];
      var geoSquare = [ minPoint, [minPoint[0], maxPoint[1]], maxPoint, [maxPoint[0], minPoint[1]]];
      var polygonFeature = new Feature(
              new Polygon(geoSquare));

我正在按以下方式绘制地图:

      var map = new Map({
        interactions: defaultInteractions().extend([new Drag()]),
        layers: [
          new TileLayer({
            source: new TileJSON({
              url: 'https://maps.siemens.com/styles/osm-bright.json'
            })
          }),
          new VectorLayer({
            source: new VectorSource({
              features: [polygonFeature]
            }),
            style: new Style({
              stroke: new Stroke({
                width: 3,
                color: [255, 0, 0, 1]
              }),
              fill: new Fill({
                color: [0, 0, 255, 0.6]
              })
            })
          })
        ],
        target: 'map',
        view: new View({
          center: [0, 0],
          zoom: 2
        })
      });

这个多边形在南加州附近,但我在地图上根本看不到这个正方形。怎么了?

编辑

这是jsfiddle

【问题讨论】:

  • 如果你能提供一个小提琴就好了。
  • @randomSoul 已编辑以包含 jsfiddle

标签: javascript openlayers-3


【解决方案1】:

要素坐标必须是 LonLat 格式,并且必须转换为视图投影。多边形环必须在同一点开始和结束,并且多边形需要额外的一对[],因为它们可以有额外的内部环(孔)。或者,您可以从范围创建多边形。这些都行。

  var minPoint = [-121.091, 32.92];
  var maxPoint = [-114.368, 36.283];
  var geoSquare = [[minPoint, [minPoint[0], maxPoint[1]], maxPoint, [maxPoint[0], minPoint[1]], minPoint]];
  var polygonFeature = new Feature(
    new Polygon(geoSquare).transform('EPSG:4326','EPSG:3857'));



  var minPoint = [-121.091, 32.92];
  var maxPoint = [-114.368, 36.283];
  var polygonFeature = new Feature(
    Polygon.fromExtent(minPoint.concat(maxPoint)).transform('EPSG:4326','EPSG:3857'));


  var minPoint = fromLonLat([-121.091, 32.92]);
  var maxPoint = fromLonLat([-114.368, 36.283]);
  var geoSquare = [[minPoint, [minPoint[0], maxPoint[1]], maxPoint, [maxPoint[0], minPoint[1]], minPoint]];
  var polygonFeature = new Feature(
    new Polygon(geoSquare));


  var minPoint = fromLonLat([-121.091, 32.92]);
  var maxPoint = fromLonLat([-114.368, 36.283]);
  var polygonFeature = new Feature(
    Polygon.fromExtent(minPoint.concat(maxPoint)));

【讨论】:

  • 如果您忽略它,这对多边形坐标的额外 [] 可能会导致真正的挫败感。浪费了大量时间试图弄清楚为什么多边形不会出现在地图上,而相同的坐标适用于 LineString。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-01-02
相关资源
最近更新 更多