经纬志
首页 / OpenLayers / 使用示例

图表与地图联动

下方用 canvas 画柱状图,悬停柱子高亮对应城市,点击柱子把地图动画到该城市,相当于图表与地图的双向联动。

OpenLayers 10.3.1 · 对应官方 d3.html · 更新 2026-10-27
源码与运行效果
运行效果

说明

图与图之间的联动只需要一个共同的数据下标:柱状图在 mousemove 里根据 相对位置算出第几根柱子,再把该下标的要素 active 属性置为 true, 样式函数随之为它放大变色。

官方示例用 d3 生成图形。示例改用原生 canvas 绘制,省掉一个外部依赖, 但联动方式完全一致:图表只负责交互,地图只负责展示,两者共享同一份数据数组。 点击柱子时把 view.animate() 的目标换成对应城市坐标。

操作结果
在柱子上移动鼠标对应城市高亮,状态栏显示数值
移出画布高亮取消
点击柱子地图平滑定位到该城市并放大

画布的 CSS 宽度与实际像素宽度可能不同,鼠标坐标要按 width / rect.width 换算后再判断柱子。