如何动态创建 multiPolygons 数组?

How to dynamically create multiPolygons Arrays?

我的目标是构建一个 turf.js 多边形。 这种硬编码工作正常:

const searchWithin = turf.multiPolygon(
[
    [[
        [-0.607051, 44.840753], 
        [-0.543708, 44.832962], 
        [-0.52225, 44.820544], 
        [-0.566367, 44.808853], 
        [-0.586367, 44.788853], 
        [-0.607051, 44.840753]
    ]],
    [[
        [5.39014, 43.279295], 
        [5.393069, 43.279249], 
        [5.391814, 43.278421], 
        [5.390709, 43.278749], 
        [5.3909, 43.2785], 
        [5.39014, 43.279295]
    ]]
]);

如你所见,在获取坐标数组之前有3级括号。 来自数据库,我得到:

[
    [
        [-0.607051, 44.840753], 
        [-0.543708, 44.832962], 
        [-0.52225, 44.820544], 
        [-0.566367, 44.808853], 
        [-0.586367, 44.788853], 
        [-0.607051, 44.840753]
    ],
    [
        [5.39014, 43.279295], 
        [5.393069, 43.279249], 
        [5.391814, 43.278421], 
        [5.390709, 43.278749], 
        [5.3909, 43.2785], 
        [5.39014, 43.279295]
    ]
]

从数据库获取数据:

.subscribe((response) => {
      this.locations = response;
      this.polygonsArray.push(this.locations);
      this.locations.forEach(element => {          
this.polygons.push(element.geoDefinition.features['0'].geometry.coordinates);

多边形声明为:

polygons: number[][][] = [];

我试过了:

this.polygons.push('['+element.geoDefinition.features['0'].geometry.coordinates)+']';

但是坐标是数字,所以我不能连接。

请问我该怎么做才能使这个结构具有 3 个方括号?任何帮助都会很有帮助。

在此先感谢您的帮助。

预期的结构不清楚。但首先值得注意的是:

  1. 如果多边形是 3 维数组,如 polygons: number[][][] = [];,你不能直接将数字压入它,如 polygons.push(5),你必须考虑结构:

polygons[0][0].push(5)polygons.push([[5]]);

  1. 另一件事是 this.polygonsArray.push(this.locations); - 它应该至少是 this.polygonsArray.push(...this.locations);,因为 push 会将整个 this.locations 数组添加为 this.polygonsArray 的第一个元素。

  2. 最后一个。如果您推送 this.polygons.push('['+something+']'); 之类的内容 - 您只需将字符串推送到简单数组。而不是你可以使用

    this.polygons[0].push(something);

希望它能为您提供一些关于如何组织 3 维结构的想法。