这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战
前言
只要了解实现原理,其实无论使用哪种地图渲染引擎都是一样的思路,用到地图api都是添加(清除)圆和添加(清除)点。下图为功能示例
功能拆解
改功能通常有两种方式自定义默认圆和根据中心点添加默认为500米的圆(实际场景一般为周边查询)
1、手动绘制圆,并添加至地图(市面上的地图引擎都有的方法不展开说明,下同)
2、获取圆的中心点
3、根据中心点计算拖拽按钮的坐标值,并添加至地图。经度坐标加500米处理,纬度坐标同中心点。
通常这一步经纬度坐标为4326也就是单位为度时,需要涉及坐标转换,转为3857投影坐标系单位为米,再进行加500的运算,坐标转换可以看我的另一篇文章
4、对拖拽按钮绑定事件mousedown(鼠标点击按住)、mousemove(鼠标移动)、mouseup(鼠标松开)
鼠标移动时做些什么?
1、首先禁用地图的移动事件
2、移除原始圆和按钮
3、根据当前鼠标位置计算圆的半径(已知中心点不变)和按钮的坐标值
4、添加新计算的圆和拖拽按钮
鼠标松开做什么?
1、恢复地图的移动事件
2、通常绘制结束后我们需要调接口,因此执行回调函数。将半径中心点作为参数传入。
总结
以上就是实现拖拽圆的具体步骤,具体详细代码放在下篇。