我正试图将某些值从JSON对象添加到新的JSON对象。因为我正在使用的当前地址解析器似乎没有提供有效的geoJSON以供在地图加载功能中使用。那么我可以在新对象中添加允许的值,以便对其进行查询吗?
我有geoCoder的返回结果,我使用剥离了这些值
var businessLoc = JSON.stringify(business1);
permittedValues = [].concat(
...business1.map(v => [
"type:" + v.type + ",",
"geometry{" + v.geometry + "}"
])
);
console.log(permittedValues);
var newObj = {
type: "FeatureCollection",
features: [{
}]
};
var jsonObj = {};
features = newObj.features.geometry;
for (i = 0; i < permittedValues.length; i++) {
newObj.features[i] = permittedValues[i];
}
console.log(newObj);
map.addSource("sample", {
type: "geojson",
data: newObj
});
结果
0: "type:Feature,"
1: "geometry{[object Object]}"
2: "type:Feature,"
3: "geometry{[object Object]}"
4: "type:Feature,"
5: "geometry{[object Object]}"
6: "type:Feature,"
7: "geometry{[object Object]}"
8: "type:Feature,"
9: "geometry{[object Object]}"
10: "type:Feature,"
11: "geometry{[object Object]}"
12: "type:Feature,"
13: "geometry{[object Object]}"
我想要什么
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-77.034084142948,
38.909671288923
]
},
业务对象
[
{
"id": "place.5130493894212350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.5,
"properties": {
"wikidata": "Q1707"
},
"text": "Kiel",
"place_name": "Kiel, Schleswig-Holstein, Germany",
"bbox": [
10.033079,
54.250613,
10.218225,
54.43281
],
"center": [
10.14056,
54.32528
],
"geometry": {
"type": "Point",
"coordinates": [
10.14056,
54.32528
]
},
"context": [
{
"id": "region.3063011031043490",
"short_code": "DE-SH",
"wikidata": "Q1194",
"text": "Schleswig-Holstein"
},
{
"id": "country.10743216036480410",
"short_code": "de",
"wikidata": "Q183",
"text": "Germany"
}
]
},
{
"id": "address.8335542519828468",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.99,
"properties": {
"accuracy": "street"
},
"text": "University Roundabout",
"place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
"center": [
-1.898631,
50.744119
],
"geometry": {
"type": "Point",
"coordinates": [
-1.898631,
50.744119
]
},
"context": [
{
"id": "postcode.17127909006362680",
"text": "BH12 5EQ"
},
{
"id": "locality.9889701754251510",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "place.6137039763504313",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "district.18683624152369430",
"wikidata": "Q203349",
"text": "Poole"
},
{
"id": "region.11773787231453920",
"short_code": "GB-ENG",
"wikidata": "Q21",
"text": "England"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "address.8335542519828468",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.99,
"properties": {
"accuracy": "street"
},
"text": "University Roundabout",
"place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
"center": [
-1.898631,
50.744119
],
"geometry": {
"type": "Point",
"coordinates": [
-1.898631,
50.744119
]
},
"context": [
{
"id": "postcode.17127909006362680",
"text": "BH12 5EQ"
},
{
"id": "locality.9889701754251510",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "place.6137039763504313",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "district.18683624152369430",
"wikidata": "Q203349",
"text": "Poole"
},
{
"id": "region.11773787231453920",
"short_code": "GB-ENG",
"wikidata": "Q21",
"text": "England"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "postcode.13814443524261080",
"type": "Feature",
"place_type": [
"postcode"
],
"relevance": 0.5,
"properties": {},
"text": "PH1 1RX",
"place_name": "PH1 1RX, Perth, Perth And Kinross, Scotland, United Kingdom",
"center": [
-3.48232183369072,
56.3888139521762
],
"geometry": {
"type": "Point",
"coordinates": [
-3.48232183369072,
56.3888139521762
]
},
"context": [
{
"id": "place.8737048398313509",
"wikidata": "Q203000",
"text": "Perth"
},
{
"id": "district.15421108926775810",
"wikidata": "Q207679",
"text": "Perth And Kinross"
},
{
"id": "region.7992878537156640",
"short_code": "GB-SCT",
"wikidata": "Q22",
"text": "Scotland"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "place.10346294296913350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.25,
"properties": {
"wikidata": "Q1496283"
},
"text": "Moreno",
"place_name": "Moreno, Buenos Aires, Argentina",
"bbox": [
-58.890257,
-34.686207,
-58.713205,
-34.508089
],
"center": [
-58.78724,
-34.65762
],
"geometry": {
"type": "Point",
"coordinates": [
-58.78724,
-34.65762
]
},
"context": [
{
"id": "region.15410301253886620",
"short_code": "AR-B",
"wikidata": "Q44754",
"text": "Buenos Aires"
},
{
"id": "country.10192800254801190",
"short_code": "ar",
"wikidata": "Q414",
"text": "Argentina"
}
]
},
{
"id": "place.10346294296913350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.25,
"properties": {
"wikidata": "Q1496283"
},
"text": "Moreno",
"place_name": "Moreno, Buenos Aires, Argentina",
"bbox": [
-58.890257,
-34.686207,
-58.713205,
-34.508089
],
"center": [
-58.78724,
-34.65762
],
"geometry": {
"type": "Point",
"coordinates": [
-58.78724,
-34.65762
]
},
"context": [
{
"id": "region.15410301253886620",
"short_code": "AR-B",
"wikidata": "Q44754",
"text": "Buenos Aires"
},
{
"id": "country.10192800254801190",
"short_code": "ar",
"wikidata": "Q414",
"text": "Argentina"
}
]
},
{
"id": "address.4377709491448262",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.3205128205128205,
"properties": {
"accuracy": "street"
},
"text": "Fr Access",
"place_name": "Fr Access, Lubbock, Texas 79413, United States",
"matching_text": "University Off",
"matching_place_name": "University Off, Lubbock, Texas 79413, United States",
"center": [
-101.870484,
33.541972
],
"geometry": {
"type": "Point",
"coordinates": [
-101.870484,
33.541972
]
},
"context": [
{
"id": "neighborhood.2103733",
"text": "Caprock"
},
{
"id": "postcode.11511121744851560",
"text": "79413"
},
{
"id": "place.2344342379218940",
"wikidata": "Q49273",
"text": "Lubbock"
},
{
"id": "region.5362387429342410",
"short_code": "US-TX",
"wikidata": "Q1439",
"text": "Texas"
},
{
"id": "country.9053006287256050",
"short_code": "us",
"wikidata": "Q30",
"text": "United States"
}
]
}
]
即将开始工作
permittedValues = [].concat(...business1.map((v) => [v.geometry]))
var newObj = {
type: "FeatureCollection",
features:[{
type:'Feature',
geometry:permittedValues[0]
}]
};
答案 0 :(得分:1)
在创建permittedValues
时不要使用字符串连接,只需提取所需的属性即可。
var permittedValues = business1.map(({type, geometry}) => ({type, geometry}));
var newObj = {
type: "FeatureCollection",
features: permittedValues
};
var business1 = [
{
"id": "place.5130493894212350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.5,
"properties": {
"wikidata": "Q1707"
},
"text": "Kiel",
"place_name": "Kiel, Schleswig-Holstein, Germany",
"bbox": [
10.033079,
54.250613,
10.218225,
54.43281
],
"center": [
10.14056,
54.32528
],
"geometry": {
"type": "Point",
"coordinates": [
10.14056,
54.32528
]
},
"context": [
{
"id": "region.3063011031043490",
"short_code": "DE-SH",
"wikidata": "Q1194",
"text": "Schleswig-Holstein"
},
{
"id": "country.10743216036480410",
"short_code": "de",
"wikidata": "Q183",
"text": "Germany"
}
]
},
{
"id": "address.8335542519828468",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.99,
"properties": {
"accuracy": "street"
},
"text": "University Roundabout",
"place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
"center": [
-1.898631,
50.744119
],
"geometry": {
"type": "Point",
"coordinates": [
-1.898631,
50.744119
]
},
"context": [
{
"id": "postcode.17127909006362680",
"text": "BH12 5EQ"
},
{
"id": "locality.9889701754251510",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "place.6137039763504313",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "district.18683624152369430",
"wikidata": "Q203349",
"text": "Poole"
},
{
"id": "region.11773787231453920",
"short_code": "GB-ENG",
"wikidata": "Q21",
"text": "England"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "address.8335542519828468",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.99,
"properties": {
"accuracy": "street"
},
"text": "University Roundabout",
"place_name": "University Roundabout, Bournemouth, Bournemouth, BH12 5EQ, United Kingdom",
"center": [
-1.898631,
50.744119
],
"geometry": {
"type": "Point",
"coordinates": [
-1.898631,
50.744119
]
},
"context": [
{
"id": "postcode.17127909006362680",
"text": "BH12 5EQ"
},
{
"id": "locality.9889701754251510",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "place.6137039763504313",
"wikidata": "Q170478",
"text": "Bournemouth"
},
{
"id": "district.18683624152369430",
"wikidata": "Q203349",
"text": "Poole"
},
{
"id": "region.11773787231453920",
"short_code": "GB-ENG",
"wikidata": "Q21",
"text": "England"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "postcode.13814443524261080",
"type": "Feature",
"place_type": [
"postcode"
],
"relevance": 0.5,
"properties": {},
"text": "PH1 1RX",
"place_name": "PH1 1RX, Perth, Perth And Kinross, Scotland, United Kingdom",
"center": [
-3.48232183369072,
56.3888139521762
],
"geometry": {
"type": "Point",
"coordinates": [
-3.48232183369072,
56.3888139521762
]
},
"context": [
{
"id": "place.8737048398313509",
"wikidata": "Q203000",
"text": "Perth"
},
{
"id": "district.15421108926775810",
"wikidata": "Q207679",
"text": "Perth And Kinross"
},
{
"id": "region.7992878537156640",
"short_code": "GB-SCT",
"wikidata": "Q22",
"text": "Scotland"
},
{
"id": "country.8605848117814600",
"short_code": "gb",
"wikidata": "Q145",
"text": "United Kingdom"
}
]
},
{
"id": "place.10346294296913350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.25,
"properties": {
"wikidata": "Q1496283"
},
"text": "Moreno",
"place_name": "Moreno, Buenos Aires, Argentina",
"bbox": [
-58.890257,
-34.686207,
-58.713205,
-34.508089
],
"center": [
-58.78724,
-34.65762
],
"geometry": {
"type": "Point",
"coordinates": [
-58.78724,
-34.65762
]
},
"context": [
{
"id": "region.15410301253886620",
"short_code": "AR-B",
"wikidata": "Q44754",
"text": "Buenos Aires"
},
{
"id": "country.10192800254801190",
"short_code": "ar",
"wikidata": "Q414",
"text": "Argentina"
}
]
},
{
"id": "place.10346294296913350",
"type": "Feature",
"place_type": [
"place"
],
"relevance": 0.25,
"properties": {
"wikidata": "Q1496283"
},
"text": "Moreno",
"place_name": "Moreno, Buenos Aires, Argentina",
"bbox": [
-58.890257,
-34.686207,
-58.713205,
-34.508089
],
"center": [
-58.78724,
-34.65762
],
"geometry": {
"type": "Point",
"coordinates": [
-58.78724,
-34.65762
]
},
"context": [
{
"id": "region.15410301253886620",
"short_code": "AR-B",
"wikidata": "Q44754",
"text": "Buenos Aires"
},
{
"id": "country.10192800254801190",
"short_code": "ar",
"wikidata": "Q414",
"text": "Argentina"
}
]
},
{
"id": "address.4377709491448262",
"type": "Feature",
"place_type": [
"address"
],
"relevance": 0.3205128205128205,
"properties": {
"accuracy": "street"
},
"text": "Fr Access",
"place_name": "Fr Access, Lubbock, Texas 79413, United States",
"matching_text": "University Off",
"matching_place_name": "University Off, Lubbock, Texas 79413, United States",
"center": [
-101.870484,
33.541972
],
"geometry": {
"type": "Point",
"coordinates": [
-101.870484,
33.541972
]
},
"context": [
{
"id": "neighborhood.2103733",
"text": "Caprock"
},
{
"id": "postcode.11511121744851560",
"text": "79413"
},
{
"id": "place.2344342379218940",
"wikidata": "Q49273",
"text": "Lubbock"
},
{
"id": "region.5362387429342410",
"short_code": "US-TX",
"wikidata": "Q1439",
"text": "Texas"
},
{
"id": "country.9053006287256050",
"short_code": "us",
"wikidata": "Q30",
"text": "United States"
}
]
}
];
var permittedValues = business1.map(({type, geometry}) => ({type, geometry}));
var newObj = {
type: "FeatureCollection",
features: permittedValues
};
console.log(newObj);
答案 1 :(得分:0)
假设返回的结果是“结果”,您是否尝试访问geometry[0]
?您正在尝试做的事情似乎很费劲。是否没有getter或API /响应中的方法可以访问此数据?