echarts地图根据地块名称获取地块的中心坐标。实现在中心位置放置标记。
需要放置数据的地块名称的数据格式:
mapData: [
{name: '江苏省', value: 500},
{name: '上海市', value: 10}
],
计算中心代码:
// this.geoData是中国地图的geojson格式数据
// this.mapData是需要计算中心点的省份名称数据
for (let item of this.mapData) {
//从地图数据中拿到坐标
for ( let area of this.geoData.features){
if (item.name === area.properties.name){
let coordinates;
// 判断是否是多块的地图
if (area.geometry.type === 'MultiPolygon') {
coordinates = area.geometry.coordinates[0][0]
} else {
coordinates = area.geometry.coordinates[0]
}
//计算中心点
let x = 0, y = 0, count = 0;
for (let i = 0; i < coordinates.length; i++) {
x += coordinates[i][0];
y += coordinates[i][1];
count++;
}
this.pointData.push({
name: item.name,
value: [x / count, y / count],
data: item.value
})
// this.pointData.push({
// name: item.name,
// value: area.properties.center,
// data: item.value
// })
}
}
}