Согласно спецификации Geo JSON, чтобы включить свойства id
и name
с координатами широты / долготы, вам необходимо проанализировать объект как тип FeatureCollection
со свойством features
.
Каждый объект массива features
должен иметь тип Feature
со значениями properties
и geometry
. Значение properties
должно содержать метаданные, а значение geometry
должно иметь тип Point
со свойством coordinates
, содержащим широту / долготу.
const cities = {
'adfjlx9w': {
name: 'New York',
latitude: 4,
longitude: -7
},
'favkljsl9': {
name: 'Copenhagen',
latitude: 2,
longitude: -18
}
}
let citiesGeoJSON = Object.entries(cities)
.reduce((
_cities,
[cityID, cityData],
) => {
let city = {
"type": "Feature",
"properties": {
"id": cityID,
"name": cityData.name,
},
"geometry": {
"type": 'Point',
"coordinates": [
cityData.latitude,
cityData.longitude,
],
},
}
_cities.features.push(city)
return _cities
}, {
"type": "FeatureCollection",
"features": [],
})
Существует Geo JSON Linter онлайн.