Daily Archives: 2014年11月20日

百度地图第七讲:路径规划

一、先看效果图:

iOS-模拟器屏幕快照“2014年11月20日-下午5.42.39”

二、实现步骤

1、创建基本视图(这一步可先跳过,直接在代码中写入需要传入的数据即可)
2、实现定位功能,这不是该Demo的核心,甚至可以去掉,具体做法可参照http://www.yusian.com/bbs/thread-8375-1-1.html
3、如何计算两地的路径并在地图上展现出来(重点)
3.1、创建两个点(BMKPlanNode类,如果是步行创建后给name及cityName赋值即可)
3.2、路径计算选项(步行、公交、自驾等),发起搜索
3.3、在代理方法中获取网络计算结果
3.4、处理计算结果(复杂的来了,做好准备!!)
3.4.1、如果是步行计算结果返回的是一个BMKWalkingRouteResult对象
3.4.2、该对象中有个结果为BMKWalkingRouteLine类型的数组,因为有可能会有多条线路
3.4.3、我们取第一条线路(数组中的第一个元素,一般最优的放在最前面)
3.4.4、该对象中有个结果为BMKWalkingStep类型的数组,一条线路中分为多个路段(因为会有岔路嘛)
3.4.5、我们取出所有的路段,每个路段都会有个入口信息与出口信息BMKRouteNode类型数据,这个可做为路径点标注使用
3.4.6、每个路段信息中包含了该路段的地理坐标集合:BMKMapPoint类型数据的组数,我们最终的目的就是为了取出这个数组中的所有元素;
3.4.7、BMKMapPoint数组是一个c语言数组,不能直接用oc的语法去处理,之所有要取出所有的这种类型数据是因为我们最终的路径是由这些点组成,然后再用折线将这些点连接成线!
3.4.8、小结一下,关键性的三个数组:路线–路段–路径点(BMKWalkingRouteLine–BMKWalkingStep–BMKMapPoint)
3.5、获取到所有的路径点之后,将这个数组传给绘图类BMKPolyline,让其绘出折线,其实所谓的路径曲线就是由很多条小段的折线组成。
3.6、通过mapView的代理方法,将折线展示到地图上,路径规划大功造成!

三、关键性代码示例[……]

继续阅读