之前做地图控件的时候,暂时只是把基础功能做好,最基础的当然是自动按照经纬度坐标和缩放级别,加载对应的瓦片地图图片文件并绘制,其次是自定义绘制图层,可以在上面绘制折线、多边形、圆形、标注点等,然后这些图形可以支持编辑状态调整位置和范围大小等。近期客户希望能增加测距的功能,之前就已经内置了测距的函数接口,需要用户自己传入两个经纬度坐标,自动计算距离,但是其实用户很多时候,希望直接在地图界面上直接画线测距,所以花费了点时间把这个功能搞定。
测距其实就是在画折线基础上,对每一条线段,计算出对应的距离,每一条线段的距离数值显示在对应线段的结束点的位置,第一个点显示起点,末尾一个点显示所有的总距离,参考了目前市面上的百度地图、高德地图、腾讯地图等,都是按照这个模式进行的。思路有了立即开干,在原有的折线图形类增加distancemode变量,标记当前折线是否开启测距,开启了,则绘制的时候,默认要绘制每个点的手柄,可以是方形也可以是圆形,这个句柄可以参照线条的粗细自动变化。在每个点的位置的右侧绘制文本,自动累加距离,最后一个点显示总距离文本,打完收工超级完美,还可以处于编辑状态,拉伸调整并拖动整体位置,实时测距。


