echarts geo 地图 缩放时,散点经纬度位置偏移
时间: 2023-07-05 12:33:07 浏览: 182
在 `echarts` 的地图中,如果使用了 `geo` 组件进行地图展示,并且在地图上添加了散点图,当地图进行缩放时,散点图的位置可能会出现偏移。这是因为 `geo` 组件的缩放是通过控制 `zoom` 属性来实现的,而散点图的位置是通过经纬度来确定的,当缩放比例发生变化时,散点图的位置也需要进行相应的调整。可以通过以下的方式来解决这个问题:
1. 在 `geo` 组件中设置 `label` 属性,并将 `label` 的 `offset` 属性设为 `[-10, -10]`,这样可以让地图上的标签位置发生偏移,避免与散点图重叠。
```
geo: {
map: 'world',
label: {
show: true,
position: 'right',
formatter: '{b}',
offset: [-10, -10] // 地图标签偏移
},
...
}
```
2. 在散点图的 `data` 中,使用 `geo` 组件的 `pointToData` 方法将经纬度坐标转换为像素坐标,并将像素坐标保存在散点图的 `coord` 属性中。
```
series: [{
type: 'scatter',
coordinateSystem: 'geo',
data: [
{
name: '北京',
value: geoCoordToPixel([116.46, 39.92]) // 将经纬度坐标转换为像素坐标
},
...
]
}]
function geoCoordToPixel(coord) {
return chart.getModel().getComponent('geo').coordinateSystem.dataToPoint(coord);
}
```
3. 在散点图的 `symbolOffset` 属性中,使用 `coord` 属性来设置散点的位置,这样散点图就可以根据地图缩放比例自动调整位置。
```
series: [{
type: 'scatter',
coordinateSystem: 'geo',
data: [
{
name: '北京',
value: geoCoordToPixel([116.46, 39.92]),
coord: [116.46, 39.92] // 经纬度坐标
},
...
],
symbolSize: 10,
symbolOffset: [0, 0], // 不需要偏移
...
}]
```
通过以上的设置,就可以实现在地图缩放时,散点图的位置自动跟随调整。需要注意的是,散点图的 `symbolOffset` 属性不需要再设置偏移量了,因为散点图的位置已经通过 `coord` 属性确定了。
阅读全文