Так что я использую Plotly с choropleth Mapbox. Мне нужно «склеить» некоторые сторонние данные на объекте свойств в массиве «функций» Geo JSON. Например:
let myData = [
{
"id": 2,
"newValue": 40
},
{
"id": 1,
"newValue": 80
}
];
А данные Geo JSON выглядят так:
let geoData = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"id": 1,
"name": "my name one"
},
"geometry": {
"type": "Polygon",
"coordinates": [
long list of co-ordinates
[
}
},
{
"type": "Feature",
"properties": {
"id": 2,
"name": "my name two"
},
"geometry": {
"type": "Polygon",
"coordinates": [
long list of co-ordinates
[
}
}
ожидаемый новый объект Geo JSON будет выглядеть следующим образом:
let geoData = {
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"id": 1,
"name": "my name one",
"newValue":80
},
"geometry": {
"type": "Polygon",
"coordinates": [
long list of co-ordinates
[
}
},
{
"type": "Feature",
"properties": {
"id": 2,
"name": "my name two",
"newValue": 40
},
"geometry": {
"type": "Polygon",
"coordinates": [
long list of co-ordinates
[
}
}
формула, которую я до сих пор придумал, объединяет значения в нужную особенность путем сопоставления идентификатора, но добавляет значения в «root» объекта, а не в свойствах, см. Функцию ниже:
let geoDataFeatures = geoData.features;
const mergeById = (a1, a2) =>
a1.map(itm => (
{ ...a2.find( (item) => ( item.objectid === itm.properties.objectid) && item ), ...itm }
)
);
console.log('merged data',mergeById(geoDataFeatures, googData));
Так может ли кто-нибудь увидеть, как мне нужно изменить карту, чтобы новые данные были объединены в объект свойств ТОЛЬКО?
Большое спасибо;)