接上文《手绘地图制作的关键点之“图层覆盖”》,继续来聊聊手绘地图另外一个关键点。

那就是“实时导航”。

作者:轻轻的烟雾(z281099678)

之前在《景区手绘地图(电子地图、智慧导览系统)如何制作》说过:

如果说手绘图本身是面子,让人对地图有第一印象和直观感受,那么实时导航功能则是地图的灵魂和里子。没有实时定位和动态路径规划导航功能的地图,只是一个可观而不可用的花瓶,没有使用价值。没有准确的而高效的实时导航算法,就不能把地图价值在游客手里发挥到最大。

实时导航的手绘地图

一、实时导航的最短路径算法

但凡与地图相关的产品,都有一个重要的核心,那就是最短路径的计算。手绘地图当然也不例外,甚至说更是其中的典型。

最短路径问题,是图论研究中的一个经典算法问题。这里的“图”的概念,和通常意义的图不一样,而是由结点和路径组成的一组数据,而最短路径则旨在寻找图中两结点之间的最短路径。

最短路算法常见的几种:bellman-ford、、spfa、floyd。每种算法的思想都有所差异甚至完全不同,适用的场景也各不相同。这里简略聊聊各自的特点。

bellman-ford:可以用于边权为负的图,图中如果有负环,算法会检测出负环。时间复杂度O(VE)。

spfa:bellman-ford的优化算法,本质是bellman-ford,所以适用性和bellman-ford一样。时间复杂度O(KE)。

dijkstra:只能用于边权都为正的图中。时间复杂度O(n2)。

floyd:也可以用于有负权的图中,即使有负环,算法也可以检测出来。可以求任意点的最短路径,有向图和无向图的最小环和最大环。时间复杂度O(n3)。

带权图

我们的手绘地图的路径规划算法,则主要用到了dijkstra和floyd。因为dijkstra算法较为高效,而地图里的点,每两个点的距离,一定是正数,不可能两点之间的距离为负。而floyd算法虽然效率较慢,但是他很强大,他可以直接计算出一个地图里所有点之间的路径。

所以针对不同场景,我们采取了两者结合的方案。

二、实时导航的方向指引

在手绘地图里,用户的实时方向,是导航的基础。

用户根据自己面对的方向,才能确定导航点位的方向。换言之,才知道当前应该往哪个方向前进。

而这一点至关重要的功能的实现,则需要接触HTML5的陀螺仪接口。现在绝大部分的设备都支持此接口。当然,是细节上,安卓设备和苹果设备有一些差异,我们在实现的时候注意兼容即可。

实现了方向的指引,则手绘地图导航功能的基础已经具备。

指北针指示方向

三、实时导航的路径信息

当前实时的道路信息主要包括:前方的转向以及距离。

类似于地图APP的导航功能,直行、转向等方向提示可以极大的增加导航的使用体验和实用效果。对于这一点,也可以通过设计算法实现。简单来说,可以通过用户前进的方向,结合规划的路径,来判断前方应当如何转向。当然,这里的细节比较复杂,就不展开赘述。而还需要注意的一点就是,判断用户是否已经偏移路线。

导航提示信息

四、实时导航的智能纠偏

手机的定位不可能十分精确,总是在一个区间范围内随机的跳跃。如果按照手机返回的经纬度来定位,则用户会非常活跃的在一个范围内跳跃。这容易让人感觉很迷茫,也非常影响体验,降低实用效果。

因此,我们这里需要设计方案来进行智能纠偏。结合导航的规划路径,以及当前的定位,还参考前进的速度、方向等参数,把用户的位置控制在比较真实而友好的位置。

当然,对于确实偏移过大的情况,也不能强行纠偏。因为这种情况,我们其实是不知道到底是用户确实已经偏离太大,还是手机定位出现的较大误差。这时可以根据实际情况提示用户已经偏移路线,或者待手机定位自动恢复正常。

纠偏信息

五、演示案例

手绘地图的“实时导航”示例(云阳龙缸景区)

视频展示一个示例。

手绘地图制作的关键点之“实时导航”相关推荐

  1. 手绘地图制作的关键点之“导航智能纠偏”

    这里再来聊一聊关于手绘地图导航的智能纠偏问题. 其实这个问题,在<手绘​地图制作的关键点之"实时导航">一文中,已经有过简述,这里再来细聊一下.本文纯属方案探讨,也是景 ...

  2. 手绘地图制作的关键点之“图层覆盖”

    前面介绍了<景区手绘地图(电子地图.智慧导览系统)如何制作>以及<景区手绘地图的绘制流程>,接下来介绍一些手绘地图制作的关键点. 手绘地图最关键的一点,就是把手绘地图准确的覆盖 ...

  3. 手绘地图深度解析:类型、风格、功能、价值、制作流程、智慧导览

    本文概要:文本尝试系统性.多角度.全方位的介绍一下现在流行的手绘地图系统. 作者:轻轻的烟雾(z281099678) 一.手绘地图定义 什么是手绘地图?或者说,手绘地图到底是什么样的? 手绘地图首先是 ...

  4. 手绘地图如何制作为电子地图实现智慧导览系统之切割瓦片图

    此系列文章主要简述一下如何把手绘地图的静态图片文件制作成为动态的电子地图,进而实现智慧导览. 因为手绘地图是一张静态的图片文件,而且往往很大,因此要转为手绘地图,才更方便用户查看.那么到底如何才能实现 ...

  5. 如何制作专业的手绘地图(电子地图、智慧导览系统)

    一.智慧导览系统介绍 手绘电子地图,就是把手绘地图覆盖到地图上,游客或者普通用户,可以在手机上通过地图的链接(或者现在流行的小程序)打开使用.是一种使用非常方便,集**"视.听.路径规划.实 ...

  6. 如何制作手绘地图?如何将图片图层精确地对准在地图上?

    最近大家常常在问,如何制作鼓浪屿手绘地图,如何将气象图层叠加在高德地图上啊? 其实地图上的研发量很小,几行代码就可以搞定. 关键是在图片绘制上,有较高的要求. 下面就用简单粗暴的方法来实现,如有不妥之 ...

  7. 制作手绘地图并准确覆盖到地图的超简单流程

    第一步,取得底图. 如果要制作比较准确匹配到地图特定区域的手绘地图,首先要取得这部分区域的地图作为绘图的底图.可以用bigemap地图下载器,下载这部分区域的地图保存为后缀为  tif  的文件,保存 ...

  8. 景区手绘地图的绘制流程

    接上文<景区手绘地图(电子地图.智慧导览系统)如何制作>,这里再来说说具体的制作流程. 手绘地图的绘制,是一个相当专业的工作.遵循一些科学的规范,可以有效避免很多无用的.返工的.错误的工作 ...

  9. 将手绘地图或自制地图显示在网页上(利用百度API)

    利用百度APi实现将手绘地图展示在网页上,达到类似这样的效果: 切图参考了:cnblog jz1108 并用了其工具, 表示非常感谢! 百度地图API目前默认支持两种地图类型(map type):普通 ...

最新文章

  1. 设置计算机在睡眠状态下能共享,使用wifi共享精灵的过程中电脑会自动休眠锁屏的解决方法...
  2. GP TEE_ObjectInfo结构体在不同的版本之间的变化
  3. AtCoder AGC004E Salvage Robots (DP)
  4. This version of the rendering library is more recent than your version of IntelliJ IDEA.
  5. Android相对布局(RelativeLayout)常用属性、练习使用按键、文本框等控件、线性布局(LinearLayout)属性
  6. vmware下ubuntu重启后不能上网
  7. css如何做玻璃效果_3种常见的断桥铝门窗玻璃,它们的隔音降噪效果如何?
  8. Hibernate错误处理:Unable to get the default Bean Va...
  9. 聪明人自动焊锡机器人_使用自动焊锡机的优势有哪些?
  10. 通用数据库弱密码检测解决方案
  11. doe五步法_DOE方法介绍
  12. win10永久禁用驱动数字签名强制的方法
  13. 计算摄影学基础知识(1)
  14. linux下phylip软件构建NJ树,MEGA软件——系统发育树构建方法(图文讲解)
  15. ubuntu 20.04配置fcitx5添加五笔拼音教程
  16. 3分钟教你如何在Word里快速制作单斜线和多斜线表头
  17. [蓝桥杯python] 印章:共有n种图案的印章,每种图案的出现概率相同。小A买了m张印章,求小A集齐n种印章的概率
  18. 2021-06-07
  19. 怎么样手机里面的计算机发出音乐,周三手机课︱怎样把U盘、电脑、微信的音乐存在手机里?...
  20. SQL数据库查询 左连接、右连接、内连接 实例

热门文章

  1. 牛客挑战赛68 A-芥川龙之介的河童
  2. HBuilderX插件_HBUilderX 的使用教程
  3. 华为笔记本电脑md13linux版,高颜值实力派,华为MateBook 13笔记本电脑
  4. LRU缓存淘汰算法优化
  5. 2.7 基本放大电路的派生电路
  6. AndroidT(13) Log 系统 -- C 语言格式的LOG输出(一)
  7. linux安装atm无法定位软件包,Ubuntu 安装snmp报Unlinked OID in IPATM-IPMC-MIB: marsMIB ::= { mib-2 57 }错误...
  8. 关于Windows 10企业评估版
  9. Java编译时出现����,黑色菱形里面有问号,为什么?
  10. 科大奥锐密立根油滴实验数据_请问科大奥锐的实验满分都是100吗?