如何利用高德地图绘制canvas动态绘制路径变化点的路径

匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。今日科技快讯
9月26日,阿里巴巴集团宣布,为进一步推进新零售战略,将增持旗下菜鸟网络的股份,未来五年继续投入1000亿元,加快建设全球领先的物流网络,实现中国24小时、全球72小时必达,为全球消费者提供最好的物流体验,并进一步推动中国社会物流总成本的降低。
本篇来自&莫比乌丝环丶&的投稿,详细地讲解了Android地图轨迹抽稀、动态绘制,希望大家喜欢
莫比乌丝环丶&的博客地址:
因公司业务调整降低运动门槛,产品部要求引入地图,记录用户的运动轨迹上传至服务器,用户进入记录页面可查看运动轨迹。而且绘制轨迹的时候要求有一个绘制动画(参照咕咚)。听到这心中万只草泥马 ~~~ 可是需求下来了,还是得硬着头皮做啊。
动态绘制效果体验
本文用到的一切地图相关的东西都来源高德地图。至于地图展示不是本文重点,所以不做赘述。文中提及的距离的计算,根据自己引用的地图类型做替换即可。文中是地图API所有,会有标注。效果如如下:
那该怎么实现呢?往下看。
定位点的抽稀-道格拉斯算法
道格拉斯简介
Douglas一Peukcer 算法由 D.Douglas 和 T.Peueker 于1973年提出,简称D一P算法,是眼下公认的线状要素化简经典算法。现有的线化简算法中,有相当一部分都是在该算法基础上进行改进产生的。它的长处是具有平移和旋转不变性,给定曲线与阂值后,抽样结果一定。
算法的基本思路是:对每一条曲线的首末点虚连一条直线,求所有点与直线的距离,并找出最大距离值 dmax ,用 dmax 与限差 D 相比:若 dmax & D ,这条曲线上的中间点所有舍去;若dmax ≥D ,保留 dmax 相应的坐标点,并以该点为界,把曲线分为两部分,对这两部分反复使用该方法。
算法的具体过程如下:
在曲线首尾两点间虚连一条直线,求出其余各点到该直线的距离,如图3(1)。
选其最大者与阈值相比較,若大于阈值,则离该直线距离最大的点保留,否则将直线两端点间各点所有舍去,如图3(2),第4点保留。
根据所保留的点,将已知曲线分成两部分处理,反复第1、2步操作,迭代操作,即仍选距离最大者与阈值比較,依次取舍,直到无点可舍去,最后得到满足给定精度限差的曲线点坐标,如图3(3)、(4)依次保留第6点、第7点,舍去其它点,即完成线的化简。
算法代码实现
存储经纬度坐标的实体 LatLngPoint
使用三角形面积(使用海伦公式求得)相等方法计算点 pX 到点 pA 和 pB 所确定的直线的距离, AMapUtils.calculateLineDistance(start.latLng, end.latLng) 计算两点之间的距离,此公式高德API
Douglas 工具类具体代码:
上图中展示的轨迹是定位得到的4417个点,经过抽稀之后绘制在地图上的样式。算法中传入的阙值是10,4417个点处理之后只136个点。而且这136个点绘制的轨迹和4417个点绘制的轨迹几乎没有什么差别。
不知道你们有没有被震撼到,反正我是彻彻底底被震到了。作为算法小白的我,感觉整个世界都被颠覆了。
轨迹绘制-自定义运动轨迹View
最开始得时候认为直接在地图上绘制动态轨迹的,根据高德提供绘制轨迹的 API,结果直接卡死。当时一脸懵逼的找高德客服,一提高德的客服更让人窝火。算了不提了。后面自己试了好多遍之后放弃直接在地图上绘制,不知道哪一刻,就突然想到在地图上覆盖一个自定义的 View。当时有一瞬间觉得自己是这个世界上智商最接近250的┐(‘~`;)┌地图API提供了经纬度转换成手机上的坐标,所以可以拿到地图上点对应的屏幕的位置,也就自然可以自定义一个
View 动态的绘制轨迹,当自定义 View 的动画结束之后,隐藏自定义 View 然后在地图上绘制轨迹。这就是我的整体思路,下面袖子撸起,上代码:
初始化变量、画笔、path
轨迹 View 绘制
来来来,小板凳,划重点!!!
本文重点:算法、算法、算法、PathMeasure、Path
说到底写这篇文章的初衷还是想让大多数和我一样的朋友能意识到算法的重要性,之前因为不是计算机专业毕业,所以只听别人说算法如何如何重要,但在自己的内心里却并没有多重视。但是当你程序中真正用到的时候,你会发现算法之美。强大的算法会让你在千千万万的数据中找寻真正的美(也就是去除噪声,原谅我毫无征兆的文艺一下)。作为一个叛变的工科生,曾经怀疑过为什么要学数学,平常工作生活中完全用不到当年所学的夹逼定理啊,让人有种报国无门的感觉,可是经过这次算法的洗礼之后,让我想起了阔别多年的数学,而且让我第一次真正的意识到数学真的贼TM有用。如果你还想在程序这条路上继续下去那你真的应该尽快捡起数学。
至此,我想说的也完了。希望能帮到有类似需求的猿友们,文中有错误的地方请指出。-.-
如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。
欢迎长按下图&-&&识别图中二维码或者扫一扫关注我的公众号:
本文已收录于以下专栏:
相关文章推荐
原创文章,转载请注明
请先阅读《 android——框架的实现系列(依赖注入的实现) 》
《android——框架的实现系列(资...
道格拉斯-普克抽稀算法,是用来对大量冗余的图形数据点进行压缩以提取必要的数据点。
该算法实现抽稀的过程是:
1)对曲线的首末点虚连一条直线,求曲线上所有点与直线的距离,并找出最大距离值dmax,用...
百度地图绘制marker标记的时候,没必要绘制这么多所以抽稀了一下。
类似现在很火的诸如跑步记录路程,可以跟踪用户的移动轨迹,并通过地图可视化
APK : http://fir.im/l2jq
思路:高精度定位 + 画线
这是最后实际的运行效果图
对密集的点抽稀,保持点的均匀分布。
double degToMeter = Math.PI * 6378137 / 180.0;//6378137赤道半径,一度对应赤道上的一...
最近在帮老师做一个项目,类似于景点通的App手机应用,我们是要精细化一些室内的地图,室内的地图采用的是自己的一套定位机制,所有室内地图也要自己来实现,参考了网上一些例子,考虑到效率的问题,最后决定使用...
雨松MOMO带你走进游戏开发的世界之地图编辑器的使用以及绘制地图雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong....
我们可以在地图上绘制各种自定义的图形,包括点、折线、圆、多边形等等,尤其绘制点和折线非常实用,点可以用来标识所处的位置,折线可以用来描述走过的轨迹,结合前面GPS定位功能可以做出一些非常有意思的应用,...
他的最新文章
讲师:董晓杰
讲师:姚远
他的热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 高德导航手机版下载 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信