需求描述
在地图的图层中,有些需要和用户进行交互,比如现在有个需求:列表中是点位名称,点击列表的某一行后在地图上定位到所点击到点位,这个过程需要有一个缩放移动视野的动画。
解决思路
OpenLayers官网有一个例子View Animation,这个例子中里面有多种移动视野的方法,针对这个需求吗,我们选择Fly to Bern即可,这个例子的代码特别多,但是实际运用起来其实用不到太多,我们所需要进行的操作就是把这个方法摘出来并进行简化。
具体实现
因为我们想要Fly to Bern的效果,所以我们只需要找到flyTo的函数,然后摘出来简化它就可以了,我在实现这个需求时同样也给它封装了一个flyTo方法。
在这个方法中需要传递三个参数,longitude是中心点经度,latitude是中心点纬度,map是要进行移动视野的地图,其中transform和wgs84togcj02都是对坐标的转换,如果不需要可忽略这一步。
import {
transform } from 'ol/proj';
funtion flyTo = (longitude, latitude, map) => {
//这里把WGS84坐标转换为GCj02坐标
let lnglat = wgs84togcj02(longitude, latitude);
//duration 用于设置移动的速度
const duration = 2000;
//zoom是地图的视野
const zoom = map.