赞
踩
这个轨迹回放的功能迭代过很多个版本,最初的版本是轨迹点的坐标每次都是删除折线再重新生成折线,后面发现有内存泄漏,地图js中并不会及时的释放没有用的对象,哪怕是用地图提供的clearoverlay的方法,也不会去释放,不知道是地图js没有处理好还是。第二个版本是先按需生成曲线对象,每次轨迹点更新后,就调用polyline对应的setpath方法去设置新的路径,这样如果只有一条路径,则只有一个折线对象,每次都是更新他的路径就好。最后不需要的时候再去删除这个折线就好,怎大大提升了效率,减轻了频繁分配内存的压力。
按照上面的方法基本可用了,那是不是就到此为止了呢?肯定不是的,你会发现现在的方法,可以移动,但是移动起来很僵硬不连贯不平滑,需要两个点的间隔很密集才看起来不僵硬,那怎么行呢,如果用户提供的只有两个点的直线呢,突然跳跃一下子就抛到了终点,看起来多么的失败。用户希望的是平滑移动而不是跳跃运动,这个时候就需要根据两个点之间再插入点,以便移动的时候是平滑的效果,至于这个插值谁来做,可以自己用算法实现,网上也提供了类似的算法,或者从路书js文件中查看到源码,也可以直接用提供的路书功能去实现。
在对各种地图内核实现平滑移动的过程中,发现百度地图和天地图都是提供了js文件对应的类去实现,而高德地图和腾讯地图是直接将此功能放在标注点marker对象中,调用对应的moveAlong方法即可。这是两种不同的实现策略,各有优缺点。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。