主页 > 儿童车 >

iOS 百度舆图道道绘制与小车滑腻搬动

浏览1574 好评 0 点赞105

  我们在利用百度地图计算出路线的点后可以在地图上绘制出自己想要的纹理路线或者分段颜色显示,通过自定义或者利用百度给出的类直接绘制。

  我们在计算出路线之后就需要进行路线的绘制了,我们在路线的回调方法中进行设置

  当获取到路线的点时,根据百度地图demo,我们可以在此方法中进行路线的自定义设置,可以是纹理图片,可以是分段颜色绘制,也可以是单一颜色,都可以。

  (百度demo中获取)---- 图片宽高必须为2的幂次方才可以正确的在项目中使用。

  我们需要先自定义Annotation类,为小车的平滑移动保存方向和Id数据,自定义大头针,方便设置小车方向的旋转 ,两个自定义的类都是为了之后的平滑移动提供帮助。

  百度给我们的方法非常简单,就是利用UIView动画,对大头针进行一个经纬度及反向转向的设置。下面是代码 ---

  至此小车的平滑移动,我们就可以简单的处理好了。但是,这样处理的话,会有一个bug,就是对地图进行缩放时,小车对跑出地图外,这个问题是怎么引起的呢?我们应该怎么解决呢?

  引起这个问题的原因是运用的UIView动画,实际修改了属性的真实值,进行动画,UIView动画是一个过程动画,在缩放时会改变动画过程,导致平滑移动出路线外bug。这个问题就涉及到了UIView动画与核心动画的区别问题,在这个问题的处理上,我们用KeyAnimation动画进行处理(解决方案是根据百度官方人员回复处理的)。

  CACoordLayer类的关键代码needsDisplayForKey方法和图层重绘方法display,就是当mapx,mapy改变时会调用图层的重绘功能,为动画做铺垫。为大头针提供动画的能力。

  根据创建好的显示当前位置的图层进行移动,下面主要说下关键代码,在自定义的大头针中设置使用的图层为我们刚才创建的图层CACoordLayer,当我们获取到车辆经纬度,方向等信息传给大头针时,我们需要的操作为

  这个方法所做的就是将经纬度坐标转换为投影后的直角地理坐标,然后进行CAKeyframeAnimation动画,移动的属性是自定义CACoordLayer中的mapx,mapy,而不是UIView动画中的经纬度,我们都知道核心动画都是假象,并不是真正的移动,所以在移动完之后,重新为mapx赋值,更新大头针位置,避免出现小车移动的起始位置错乱的问题,简易的流程应该是这样的

  我们的项目还要实现,当路线绘制出来后,需要显示这个路线,并且需要有内边距,当我调用这个接口时

  通过与百度地图技术人员的询问,得知在调取polyLine.boundingMapRect 不能够获取到数值,技术人员给出了另一个方法获取到polyline的MapRect,然后设置了内边距

  而且根据百度技术人员的说法,这个方法也会有误差,是因为SDK设置了边距的级别,目前暂不能根据边距的大小进行精确设置

  第一次写博客,玻璃心求轻喷,希望自己能坚持下去,当做一种知识总结也能分享给一些新手朋友们.

  各位小伙伴们大家好,今天我向大家介绍一下苹果百度地图的使用方法,因为做过一些想关的APP,感觉百度地图还是挺方便的...

  该文章属于简书 — 刘小壮原创,转载请注明: 简书 — 刘小壮

  【 申请密钥AndroidSDK:应用程序包名+数字签名 As查看数字签名:cmd-----cd .android...

本站文章于2019-11-26 10:00,互联网采集,如有侵权请发邮件联系我们,我们在第一时间删除。 转载请注明:iOS 百度舆图道道绘制与小车滑腻搬动
已点赞:105 +1

上一篇:

下一篇:没有了



关于我们

  • 关于我们
  • 品牌介绍
  • 诚聘英才
  • 联系我们

学生/家长

  • 帮我选学校
  • 帮我选专业
  • 投诉/建议

教育机构

  • 如何合作
  • 联系方式

其他

  • 投稿合作
  • 权利声明
  • 法律声明
  • 隐私条款
全国统一客服电话
4006-023-900
周一至周六 09:00-17:00 接听
IT培训联盟官方公众号
扫描访问手机版
家电维修|北京赛车pk10