Reputation: 103
I'm trying to awkwardly add certain values from a JSON object to a new JSON object. Because the current geocoder i'm using doesn't seem to provide valid geoJSON back to use in the maps load function. So can i add permitted values, to the new object so it can be queried?
I have a return result of geoCoder which i strip the values using
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
});
result
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]}"
what i want
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-77.034084142948,
38.909671288923
]
},
Business object
[
{
"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"
}
]
}
]
what's close to working
permittedValues = [].concat(...business1.map((v) => [v.geometry]))
var newObj = {
type: "FeatureCollection",
features:[{
type:'Feature',
geometry:permittedValues[0]
}]
};
Upvotes: 2
Views: 106
Reputation: 1
Assuming the output labeled 'result' is what you get back, have you tried accessing geometry[0]
? What you are trying to do seems like a lot of effort. Is there no getter, or a method in the API / response to access this data?
Upvotes: 0
Reputation: 781858
Don't use string concatenation when creating permittedValues
, just extract the properties that you want.
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);
Upvotes: 1