如何动态创建 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 个方括号?任何帮助都会很有帮助。
在此先感谢您的帮助。
预期的结构不清楚。但首先值得注意的是:
- 如果多边形是 3 维数组,如
polygons: number[][][] = [];
,你不能直接将数字压入它,如 polygons.push(5)
,你必须考虑结构:
polygons[0][0].push(5)
或 polygons.push([[5]])
;
另一件事是 this.polygonsArray.push(this.locations);
- 它应该至少是 this.polygonsArray.push(...this.locations);
,因为 push 会将整个 this.locations
数组添加为 this.polygonsArray
的第一个元素。
最后一个。如果您推送 this.polygons.push('['+something+']');
之类的内容 - 您只需将字符串推送到简单数组。而不是你可以使用
this.polygons[0].push(something);
希望它能为您提供一些关于如何组织 3 维结构的想法。
我的目标是构建一个 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 个方括号?任何帮助都会很有帮助。
在此先感谢您的帮助。
预期的结构不清楚。但首先值得注意的是:
- 如果多边形是 3 维数组,如
polygons: number[][][] = [];
,你不能直接将数字压入它,如polygons.push(5)
,你必须考虑结构:
polygons[0][0].push(5)
或 polygons.push([[5]])
;
另一件事是
this.polygonsArray.push(this.locations);
- 它应该至少是this.polygonsArray.push(...this.locations);
,因为 push 会将整个this.locations
数组添加为this.polygonsArray
的第一个元素。最后一个。如果您推送
this.polygons.push('['+something+']');
之类的内容 - 您只需将字符串推送到简单数组。而不是你可以使用this.polygons[0].push(something);
希望它能为您提供一些关于如何组织 3 维结构的想法。