В вашем Geo JSON по-прежнему отсутствует свойство id
, которое должно быть уникальным для каждой функции в вашем JSON массиве features
; в руководстве указано, что он должен находиться на верхнем уровне объекта функции, но наличие id
в объекте properties
также работает, как вы можете видеть на другой карте в коде. Значение, хранящееся в electoralDistrictCode
из ваших данных о свойствах, является хорошим кандидатом для id
:
[{
"type": "Feature",
"id": "MON",
"properties": {
"electoralDistrictCode": "MON",
"electoralDistrict": "Monaragala",
// ...
},
"geometry": {/* ... */}
},{
"type": "Feature",
"id": "ANU",
"properties": {
"electoralDistrictCode": "ANU",
"electoralDistrict": "Anuradhapura",
// ...
},
"geometry": {/* ... */}
},
// ...
]
Как только вы добавите это в свой JSON, ваша карта будет правильно отображаться в AmCharts v4. Демо ниже, используя ручной AJAX запрос на изменение JSON для работы с библиотекой:
var map = am4core.create("chartdiv", am4maps.MapChart);
// indonesia geojson
fetch(
"https://raw.githubusercontent.com/GayanSandaruwan/elections/master/electoral_with_results.geojson"
)
.then(function(resp) {
if (resp.ok) {
return resp.json();
}
throw new Error("Unable to fetch json data");
})
.then(function(data) {
//add the missing id property before assigning it to the map
data.features.forEach(function (feature) {
feature.id = feature.properties.electoralDistrictCode;
});
map.geodata = data;
});
map.projection = new am4maps.projections.Miller();
var polygonSeries = new am4maps.MapPolygonSeries();
polygonSeries.useGeodata = true;
map.series.push(polygonSeries);
<script src="https://www.amcharts.com/lib/4/core.js"></script>
<script src="https://www.amcharts.com/lib/4/maps.js"></script>
<div id="chartdiv" style="width: 100%; height: 400px;"></div>