我对这个JSON有疑问。如何从这里获取坐标?
我尝试像下面的代码一样使用for(){}
,但是不起作用。
item {
"type": "type1",
"features": [{
"type": "typeee1",
"geometry": {
"type": "Point",
"coordinates": [
-19.726330999999998,
41.360610000000001
]},
"properties": {
"id_strada": "1433",
"nome_strada": "test3",
} },
{
"type": "typeee2",
"geometry": {
"type": "Point",
"coordinates": [
19.726344999999998,
26.36063
] },
"properties": {
id_strada": "13",
"nome_strada": "test5",
} },
{
"type": "typeee3",
"geometry": {
"type": "Point",
"coordinates": [
19.726358999999999,
98.36065
] },
"properties": {
id_strada": "14",
"nome_strada": "test34",
} }, {
"type": "typeee5",
"geometry": {
"type": "Point",
"coordinates": [
19.726372999999999,
55.360669999999999
] },
"properties": {
id_strada": "14335",
"nome_strada": "test39",
} }],
"last_update": "15-08-2019 15:04:45"
}
调用JSON的函数如下所示。
item: Item[];
this.ws.getitems().subscribe(
item => {
this.item = item;
console.log('this.item.length', this.item.length)
for (let i = 0; i < this.item.length; i++) {
}
}
);
this.item.length未定义
我的问题是,如何在此处获取坐标?
你能问我任何想法吗? 谢谢!
答案 0 :(得分:0)
在数组中的数组中没有数组。在对象中的对象中有一个对象中的数组。
interface Feature {
type: string;
geometry: {
type: string;
coordinates: [ number, number ];
};
properties: {
id_strada: string;
nome_strada: string;
};
}
interface Item {
type: string;
features: Feature[];
last_update: string;
}
const items$: Observable<Item> = this.ws.getItems();
const coordinates$: Observable<[number, number]> = items$.pipe(
switchMap((item: Item) => of(
...item.features.map((feature: Feature) => feature.geometry.coordinates)
)),
);
coordinates$.subscribe((coordinates: [number, number]) => console.log(coordinates));
目前还不清楚您的意图是什么。您的Item
对象中有多个坐标。您是要链接所有坐标还是仅链接第一个坐标,还是要按要素拆分它们?我为您提供了一种方法,使您收到的所有坐标都保持不链接状态。您必须弄清楚该怎么做。
答案 1 :(得分:0)
如果您已经在item
中,则坐标位于item.geometry.coordinates
如果提供的json是x
,则可以在x.features[0].geometry.coordinates
获得第一个坐标。
您可以通过以下方式找到每组坐标:
x.features.forEach(item => {
let coords = item.geometry.coordinates
// do something with coords
})