在 Part 3 中我们了解到如何调用 HERE Routing API 实现两点间路径规划,以及如何从当前位置出发规划路径。
这个部分继续来看看,如何展示多条路线及其信息,并允许用户交互选择。
Pre-session: 重构代码
这一部分不是改进功能,而是整理思绪。磨刀不误砍柴工,放之四海而皆准。
冰淇凌小网页的功能不断增多,代码也随之膨胀,我们要时不时地整理收纳一下,避免自己在找乐子的路上备受打击。
在 Scripts 文件夹中,新建:
- map.js 用于存放和底图及绘制路线相关的逻辑;
- utils.js 用于存放辅助功能,例如,将 latlog 坐标转化成 WayPointString 以供 Routing Service 使用。
代码与Part 3 类似,但是因为做了重构,需要注意其中的调用关系及 html页面中的加载顺序。
complete code Github - kikitaMoon/HERE_JS_Who_Wants_Icecream
Multiple Routes
在日常导航出行时,多给出几条路线供用户选择,也是一个极常见的需求。
使用 HERE Routing API 计算路线时,可在请求中加入参数 alternatives
来获得多个推荐路线。
alternatives: 2; 即,1 (primary) + 2 (alternatives) = 3 条路线。
1 | HEREMap.prototype.drawRoute = function (fromCoordinates, toCoordinates) { |
由于产生了多条道路,绘制道路的过程就要被执行多次,那么我们就把 drawRoute
函数挪到 route.js
中的 HERERoute
对象中,以供每次绘制道路调用。
1 | // Add drawRoute Function to HERERoute |
与此同时,做 onSuccess
函数的对应修改,在返回结果中依次调用 drawRoute
。
1 | var onSuccess = function (result) { |
Bingo!
View Bounds
基本功能已实现,为了更好的体验,我们继续加工加工。
在 Part 3 中的我们通过 setViewBounds
将地图显示为路线的范围,在Part 4 中显然就不适用了,因为这样只会返回跳转到最后一条路线的范围。将所有的路线加入到一个组中,然后跳转组的范围,来解决这个问题。
对 onSuccess
进行修改:
1 | var onSuccess = function (result) { |
同时移除 drawRoute
中原先的 setViewBounds
语句,并向 H.map.Group 容器中增加返回的route。
1 | // Setting view bounds using Group bounds not the last route |
original resource Part4: Advanced Routing
complete code Github - kikitaMoon/HERE_JS_Who_Wants_Icecream
如果您喜欢此博客或发现它对您有用,则欢迎对此发表评论。 也欢迎您共享此博客,以便更多人可以参与。 如果博客中使用的图像侵犯了您的版权,请与作者联系以将其删除。 谢谢 !