0

在将 HERE Maps API for Javascript 升级到 3.1 版本时,我通过连接已替换为的折线来绘制H.geo.Strip多边形H.geo.LineString

var point = _this.map.screenToGeo(e.currentPointer.viewportX, e.currentPointer.viewportY);

var strip = new H.geo.LineString(_this.growingStrip.getLatLngAltArray().concat(point.lat, point.lng, point.alt));
_this.growingShape.setGeometry(strip);

也替换setStripsetGeometry但出现错误:

未捕获的 InvalidArgumentError:H.map.Polygon#setGeometry(参数 #0 LINESTRING (-74.58221773042507 40.50631688766448,-74.5725439612637 40.50650019704824,-74.6057503938928643 4)4)

4

1 回答 1

0

根据文档H.map.Polygon.setGeometry函数需要H.geo.Polygon | H.geo.MultiPolygon,因此您需要创建 H.geo.Polygon 它将被更新,然后用作地图多边形的几何:

var growingLineString = new H.geo.LineString([0, 0, 0, 10, 10, 0, 10, 0, 0]),
    growingPolygon = new H.geo.Polygon(growingLineString),
    growingShape = new H.map.Polygon(growingPolygon);

map.getViewModel().setLookAtData({
  center:{lat: 0, lng:0}, 
  zoom: 5
});
map.addObject(growingShape);

map.addEventListener('tap', (e) => {
  var p = e.currentPointer,
      point = map.screenToGeo(p.viewportX, p.viewportY);

  growingLineString.pushPoint(point);
  growingPolygon.setExterior(growingLineString);

  growingShape.setGeometry(growingPolygon);
})

注意:您可以使用H.geo.LineString.pushPoint函数代替 Array.concat。

于 2021-02-17T16:11:36.020 回答