首页 / OpenLayers / 使用示例
图表与地图联动
下方用 canvas 画柱状图,悬停柱子高亮对应城市,点击柱子把地图动画到该城市,相当于图表与地图的双向联动。
源码与运行效果
说明
图与图之间的联动只需要一个共同的数据下标:柱状图在 mousemove 里根据
相对位置算出第几根柱子,再把该下标的要素 active 属性置为 true,
样式函数随之为它放大变色。
官方示例用 d3 生成图形。示例改用原生 canvas 绘制,省掉一个外部依赖,
但联动方式完全一致:图表只负责交互,地图只负责展示,两者共享同一份数据数组。
点击柱子时把 view.animate() 的目标换成对应城市坐标。
| 操作 | 结果 |
|---|---|
| 在柱子上移动鼠标 | 对应城市高亮,状态栏显示数值 |
| 移出画布 | 高亮取消 |
| 点击柱子 | 地图平滑定位到该城市并放大 |
画布的 CSS 宽度与实际像素宽度可能不同,鼠标坐标要按 width / rect.width 换算后再判断柱子。