导航应用程序的制作方法

文档序号:6214498阅读:937来源:国知局
导航应用程序的制作方法
【专利摘要】一些实施例提供了一种在设备上呈现一种新型导航呈现的导航应用程序。该应用程序标识设备的位置,并且标识与所标识的设备位置相关联的道路标志的样式。该应用程序然后以匹配所标识的样式的道路标志的形式生成导航指令。为了生成道路标志,该应用程序在一些实施例中标识用于所标识的样式的道路标志模板图像,并且通过将所标识的道路标志模板与文本指令和图形指令中的至少一者合成来生成道路标志。在一些实施例中,道路标志被生成为具有与所标识位置处的道路标志相关联的纹理和外貌的复合纹理图像。
【专利说明】导肖几应用程序


【发明内容】

[0001] 本发明的一些实施例提供了一种包括具有多个新型特征的导航应用程序的设备。 在一些实施例中,该设备具有显示该应用程序的输出的触敏屏幕和允许用户通过该屏幕提 供触摸和手势输入以与该应用程序交互的多点触摸界面。
[0002] 在一些实施例中,该导航应用程序的新型特征包括(1)多个不同视图(例如二维 逐向视图、三维逐向视图、总体路线视图等等)和导航期间在这些视图之间的平滑过渡,
[2] 用于导航的新型用户界面(UI)控件,(3)用于标识沿所导航道路的操控的外貌逼真的 道路标志,(4)动态地生成用于道路标志的指令和方向指示器以及所标识操控的其他呈现, (5)在导航应用程序在设备上运行于后台中时的信息导航显示,(6)新型语音识别导航引 导,和(7)与设备上可用的或对于设备可用的其他路线规划应用程序的集成。
[0003] 虽然所有这些特征在一些实施例中都是该导航应用程序的一部分,但是其他实施 例在该导航应用程序中不采用所有这些特征。此外,在一些实施例中,导航应用程序是提供 几个其他有用操作的集成地图绘制应用程序的一部分,所述其他有用操作包括位置浏览、 地图搜索、和路线标识操作。但是,普通技术人员将认识到,在其他实施例中,导航应用程序 是不包括这些其他操作中一些或所有操作的独立应用程序。
[0004] 在这里介绍上述特征中的每一者。如上所述,一些实施例的导航应用程序提供导 航期间的多个不同视图以及这些视图之间的平滑过渡。在一些实施例中,此类视图的示例 包括二维(2D)逐向视图、三维(3D)逐向视图、和总体路线视图。一些实施例中的该应用程 序在设备渲染的3D导航场景内从一透视渲染位置生成逐向视图。这个透视渲染位置在一 些实施例中是能调节的,并且可以被视为能够从多个不同透视(例如从多个不同位置和取 向)捕获3D导航场景的虚拟相机。因此,在一些实施例中,逐向导航是所导航路线的动画 渲染,其是从基于携带设备的用户的穿行方向和速度沿路线指引穿行的虚拟相机的视点渲 染的,携带设备的用户的穿行方向和速度在一些实施例中是由与该设备相关联的方向数据 (例如GPS数据、三角蜂窝塔数据等)捕获的。
[0005] 在导航期间,一些实施例的导航应用程序允许用户通过设备屏幕上的手势输入来 改变虚拟相机的位置(即以下位置,从该位置渲染所导航路线)。虚拟相机的移动(即对路 线进行渲染所源自的位置的移动)允许导航应用程序呈现另选的3D视图。一些实施例甚 至使用虚拟相机来渲染用于逐向导航的俯视2D视图,而其他实施例通过放大和缩小2D地 图来渲染俯视2D视图。
[0006] 在一些实施例中,导航应用程序呈现用作为3D指示器和3D启动器/切换器二者 的3D控件(例如按钮)。3D控件在一些实施例中被实现为悬浮控件,悬浮控件在被需要时 可以"悬浮"在2D或3D导航呈现上方,而在不被需要时可以"悬浮"离开该呈现。这个控 件还用作为关于当前视图是3D视图的指示器。3D控件可以具有不同外观(例如被着以灰 色、黑色、蓝色等)来提供不同指示。在一些实施例中,3D控件在3D数据对于用户当前位置 不可用时为灰色,在3D数据可用但是用户当前正在查看2D地图时为黑色,在用户当前正在 3D模式中查看地图时为紫色。在一些实施例中,3D控件在用户处于某个缩放水平时显示建 筑物图像,并且在被用户选择时提供区域中建筑物的"空拍图"。其还提供进入和退出3D导 航的一种快速机制。如下文中进一步所述,导航应用程序允许通过设备的多点触摸界面的 其他手势输入来在2D和3D导航视图之间进行转换。
[0007] -些实施例中的导航应用程序使用悬浮控件以便将屏幕上控件保持为最少,并且 从而尽可能多地显示交互式导航。在一些实施例中,悬浮控件是当用户在不同导航视图之 间移动、或者对于导航仅仅是另一应用程序的几个模态中的一者的实施例在不同应用程序 模态之间移动时通过以动画方式调节其内容来适配于眼前任务的一组控件的一部分。这个 自适应特征允许导航应用程序针对不同任务进行优化,同时当在那些任务之间移动期间保 持一致的外貌和交互模型。
[0008] 当导航应用程序开始导航呈现时,一些实施例中的该应用程序(1)自动地隐藏悬 浮控件以及对导航进行显示所沿着的地图顶部上的条栏(包含其他n控件),以及(2)开 始全屏逐向导航呈现。在这个模式中,该应用程序限制与地图的触摸交互。在一些实施例 中,需要轻击来访问被自动隐藏的控件。在一些实施例中,这些控件朝向全屏导航外貌被适 配,包括在沿顶部的条栏中预计到达时间(ETA)的突出显示。
[0009] 在一些实施例中,顶部条栏中的控件中的一者是概览按钮。通过在导航期间的任 何时间选择该按钮,用户可以无缝地在全屏;显示针对逐向指引优化的视图的逐向呈现; 和显示剩余路线视图的概览呈现之间切换,这更好地适应浏览。
[0010] 在一些实施例中,恒定的控件组和地图中的原位转变提供了概览模式和全屏模式 之间的连续性。这些控件还包括允许用户在概览模式或全屏模式中结束导航的控件。一些 实施例还允许在导航的同时执行搜索。例如,一些实施例提供下拉柄,其允许当在概览模式 中导航期间将搜索栏拉入到概览显示中。替代地或者结合地,一些实施例允许在导航期间 通过一些实施例的设备的语音识别输入来执行搜索。此外,在一些实施例中,该应用程序允 许用户在逐向导航期间执行搜索(例如语音发起的和/或基于文本的搜索)。一些实施例 的导航应用程序还允许通过设备的语音识别输入来发起导航。
[0011] 在导航期间,一些实施例的导航应用程序还允许用户提供一些手势输入,而不引 用悬浮控件或顶部条栏控件。例如,不同实施例提供不同手势输入来在逐向导航期间调 节2D/3D视图。在一些实施例中,手势输入是用于调节缩放水平的两指张合操作。对缩放 水平的这个调节固有地调节相机相对于路线指引的位置和旋转,并且从而改变路线指引的 2D/3D透视图。
[0012] 或者,作为对于缩放操作的替代或附加,其他实施例提供其他手势输入(例如手 指拖动操作)来改变相机的位置。在再一些其他实施例中,手势输入(例如手指拖动操作) 立即改变相机的查看方向以允许用户立即扫视所导航路线的侧面。在这些实施例中,该应 用程序在一个短的时间段之后将相机返回到其先前沿路线的视图。
[0013] 导航应用程序的另一新型特征是在导航期间使用的看起来逼真的道路标志。在一 些实施例中,这些标志是与实际公路标志非常相像的纹理图像。一些实施例中的这些标志 包括指令箭头、文本、标牌、和距离。一些实施例的导航应用程序在大量不同上下文中呈现 大量标志变体。此外,在一些实施例中,该应用程序根据地区规范以不同颜色呈现标志。
[0014] 对于靠近在一起的多个操控,一些实施例中的该应用程序在主标志下面呈现次标 志。此外,随着经过一个操控,导航应用程序用模拟在公路上标志在头顶经过的运动来动画 地显示该标志消失。在即将到来的操控正在接近时,导航应用程序用微妙动画(例如整个 标志上闪光)来吸引对该标志的注意。
[0015] 在一些实施例中,导航应用程序基于该应用程序正在显示与导航操控相关联的道 路标志或其他呈现(例如列表视图)时所处的上下文,动态地生成用于该标志和呈现的指 令。对于某一上下文,通过考虑多个因素来选择指令文本,这些因素诸如是可用空间、借助 于除了文本之外的其他方式传送的信息的可用性(例如语音引导的可用性)、这些指令变 体中每一者的局部长度、设备显示屏幕的尺寸等。通过本地地合成和评估几个可选方案,该 应用程序可以在每个场景中挑选一最佳指令串。
[0016] 类似地,一些实施例的导航应用程序基于该应用程序正在显示与导航操控相关联 的道路标志或其他呈现(例如列表视图)时所处的上下文,自适应地生成用于该标志和呈 现的方向图形指示器。例如,当在标志或呈现上有足够的空间供较大标志使用时,一些实 施例的导航应用程序通过使用较大的图形方向指示器来标识在沿路线的交叉点处要执行 的操控,所述较大的图形方向指示器包括:(1)大致表示车辆路径的突出的样式化箭头、和 (2)对应于交叉点其他元素的不强调的一组线条和曲线。在使用该方法的一些实施例中,T 型交叉点处的右转由具有直角的大箭头表示,该直角与平行于该大箭头的区段中的一者延 伸的较小的闪烁区段连接。一些实施例中的这个较小区段也被推向侧面偏移,使得车辆所 走的路径占主要位置。
[0017] 操控的此类表示(其包括突出的样式化箭头和不强调的一组线条)提供了关于操 控的相当完备的信息,同时仍然保持概括性和容易理解。但是,在其他上下文中可能在该标 志或其他呈现上没有足够空间用于此类表示。因此,对于这样的情况,一些实施例的导航应 用程序使用操控的另选表示,所述另选表示省略显示交叉点,而是只显示运动方向上的箭 头。
[0018] 为了生成用于沿路线的交叉点操控的突出样式化箭头或简化箭头,一些实施例中 的导航应用程序从服务器接收交叉点和操控的描述。在一些实施例中,服务器执行自动过 程来基于地图数据生成这个描述,并且以压缩的几何点数据来提供该信息。此外,在路线 导航开始时,一些实施例中的服务器向导航应用程序提供沿路线的所有交叉点和操控的描 述,并且间或地在用户偏离路线并且服务器计算出新路线时对该描述进行更新。
[0019] 当导航应用程序接收到交叉点和操控描述时,一些实施例的该应用程序首先执行 对交叉点和操控的表征进行简化的过程,然后使用这个所简化的表征来生成用于交叉点的 突出的样式化图形方向指示器。为了显示交叉点处的操控,一些导航应用程序经常提供不 对于交叉点进行表述也不传递太多信息的纯箭头,而其他导航应用程序提供交叉点的非常 详细的表示和通过这个详细表示提供复杂的方向表示。因此,一种现有方法提供非常少的 信息,而另一方法提供太多信息而使得信息实际上无用。通过基于交叉点的简化描述生成 突出的样式化方向指示器,一些实施例的导航应用程序显示交叉点处操控的详细表示,同 时消除交叉点的某些不必要的复杂性。
[0020] 在一些实施例中,导航应用程序在该应用程序在后台中工作期间提供导航指令, 并且甚至在设备被锁定期间提供导航指令。在一些实施例中,在只有减少的一组控件可以 用来提供对设备的输入时,设备被锁定。例如,在一些实施例中,设备的锁定大大地限制了 用户可以通过设备的触敏屏幕提供的输入的数量。
[0021] 在一些实施例中,语音引导指令是在导航应用程序工作于后台中期间或在设备被 锁定期间可以提供的指令的一个示例。作为语音引导的替代或与语音引导结合,导航应用 程序可以在工作于后台中期间在至少两个模式中提供文本和/或图形指令。
[0022] 首先,一些实施例的该应用程序将实时导航视图(例如逐向视图)结合在锁定屏 幕背景中,所述实时导航视图包括在锁定屏幕显示中的文本和图形导航描述。利用这个呈 现,用户可以在该应用程序运行于后台中期间看到导航指令,而无需对设备解锁。在一些实 施例中,该应用程序还通过将正常情况下会占据导航显示所使用的空间的通知发送到锁定 屏幕显示中的抽屉来改善锁定屏幕体验,其在一些实施例中是立即进行的,而在其他实施 例中是在该通知在锁定屏幕视图中被显示了一个短的时间段之后进行的。此外,只要用户 对设备解锁,一些实施例就在没有动画的情况下返回到导航显示,以便使体验无缝。
[0023] 在一些实施例中,如果没有操控即将发生,在该应用程序在一时间段之后关闭锁 定屏幕导航显示。但是,该应用程序在这些实施例中的一些实施例中在接近即将发生的操 控和/或需要提供新导航指令时点亮屏幕。这相对于每个步骤的一段时间而言是小的时间 量,从而导航指令的显示不会以显著地劣化电池寿命为代价。为了增强该体验,一些实施例 中的导航应用程序在导航提示之前早早地激活环境光传感器,使得环境光设置可以被用来 在到了显示导航地图的时间时将屏幕点亮到正确的亮度。
[0024] 其次,在一些实施例中,甚至在设备未锁定时,导航应用程序也工作于后台中。在 导航应用程序运行于执行几个其他应用程序的设备(例如智能电话)上时是这样的情况。 在这样的设备中,在设备正在呈现设备的操作系统提供的视图(例如页面)或者设备上另 一应用程序提供的视图时,导航应用程序会工作于后台中。
[0025] 在导航应用程序在未锁定的设备上工作于后台中时,该设备在一些实施例中(1) 在与即将到来的操控相距较远时,使用双倍高度状态栏来指示导航应用程序的后台运行, 并且(2)在接近操控或者在能听到引导指令时,使用包括动态更新的与操控相距的距离的 标志一样的导航标幅。此外,该应用程序保持所述标志一样的标幅直到操控完成,并且在该 空间中抑制其他通知。在一些实施例中,对双倍高度状态栏或导航标幅的选择就指示设备 切换到导航应用程序生成的导航视图。
[0026] 下面将进一步介绍上述特征以及一些实施例的导航应用程序的一些其他特征。在 上文和下文的描述中,很多这些特征被描述为是提供新型位置浏览、位置搜索、路线标识和 路线导航操作的集成地图绘制应用程序的一部分。但是,普通技术人员将认识到,这些新型 操作在其他实施例中由不执行所有这些操作、或者除了这些操作之外还执行其他操作的应 用程序来执行。
[0027] 上述
【发明内容】
旨在用作对本发明的一些实施例的简单介绍。其并非意味着对在本 文档中所公开的所有发明主题进行介绍或概述。随后的【具体实施方式】以及在【具体实施方式】 中所参照的附图将进一步描述
【发明内容】
中所述的实施例以及其他实施例。因此,为了理解 该文档所描述的所有实施例,需要全面审阅
【发明内容】
、【具体实施方式】和附图。此外,受权利 要求书保护的题材不被
【发明内容】
、【具体实施方式】及附图中的示例性细节所限定,而是被所 附权利要求所限定,这是因为受权利要求书保护的题材在不脱离本题材的实质的情况下能 够以其他特定形式而体现。

【专利附图】

【附图说明】
[0028] 在所附的权利要求中阐述了本发明的新型特征。但是,为了解释的目的,在以下附 图中给出了本发明的几个实施例。
[0029] 图1例示了执行本发明一些实施例的集成地图绘制应用程序的设备的一个示例。
[0030] 图2以用户与地图绘制应用程序交互以获得路线规划方向的三个阶段例示了一 个示例。
[0031] 图3例示了一些实施例的导航应用程序如何提供3D控件作为用于进入3D导航模 式的快速机制。
[0032] 图4例示了在地图绘制应用程序从用于地图浏览的非沉浸式地图视图转换到用 于导航的沉浸式地图视图时显示该应用程序的设备。
[0033] 图5呈现了用于例示虚拟相机概念的一个简化示例。
[0034] 图6例示了一些实施例的地图绘制应用程序改变3D控件的外观以指示地图视图 的不同2D和3D状态。
[0035] 图7例示了一些实施例中从3D模式到2D模式的切换。
[0036] 图8例示了通过收缩和扩展手势对虚拟相机的距离进行的调节。
[0037] 图9例示了角度可以通过手势调节的相机的一个实施例。
[0038] 图10概念性地例示了一些实施例的地图绘制应用程序所提供的用于将虚拟相机 的位置保持在沿弧线的限定范围内的特征。
[0039] 图11例示了一些实施例的全屏模式。
[0040] 图12例示了一些实施例中在设备上有电话呼叫期间控件被隐藏和显现的导航应 用程序。
[0041] 图13例示了一些实施例中所编程路线的结束。
[0042] 图14例示了一些实施例中的导航程序结束控件。
[0043] 图15例示了在一些实施例中当用户将地图推向侧面时地图的旋转。
[0044] 图16和17例不了一些实施例中的概览控件。
[0045] 图18概念性地例示了一些实施例的地图绘制应用程序为了渲染用于在客户端设 备处显示的地图而执行的处理或地图渲染流水线。
[0046] 图19A和19B概念性地例不了描述一些实施例的集成地图、搜索、和导航应用程序 (例如上面章节中所述的应用程序)的不同状态以及这些状态之间的转换的状态图。
[0047] 图20例示了在一些实施例中使用此类公路标牌的几个⑶I场景。
[0048] 图21以四个阶段例示了一些实施例的用于移除一导航标志并引入下一标志的动 画。
[0049] 图22通过四个阶段例示了一些实施例中的此类闪烁动画,这四个阶段将显示的 背景示为灰色,以便在闪烁在标志上移动时与闪烁形成对比。
[0050] 图23通过四个阶段例示了一些实施例中用于快速连续的操控的两个标志的显 /_J、i 〇
[0051] 图24概念性地例示了一些实施例的地图服务为了为提出请求的设备生成路线并 且将路线和导航指令提供给提出请求的设备而执行的操作。
[0052] 图25概念性地例示了一些实施例的地图服务为了生成和传输路线和交叉口数据 给用户而执行的过程。
[0053] 图26概念性地例示了一些实施例的用于确定应该一起作为单个交叉口对待的多 组交叉点之间的路径区段的过程。
[0054] 图27例示了交叉点的一个示例,并且表明了在一些实施例中不要求路径区段以 直角相会或者路径直线地继续通过交叉点。
[0055] 图28例示了一些实施例中具有两个双幅路径和一单向道路的交叉口。
[0056] 图29概念性地例示了一些实施例中用于将几个交叉点一起联结成单个交叉口以 及标识该交叉口的分支的过程。
[0057] 图30例不了一些实施例中在一具有两个路径的双幅路和一具有两个路径的双幅 路之间的经常存在的交叉口。
[0058] 图31例示了一些实施例中左转通道被定义为单独路径区段的交叉口。
[0059] 图32例示了一些实施例中的交叉口中的交流道。
[0060] 图33例示了一些实施例中的交叉口中的交流道。
[0061] 图34例示了一些实施例中的交叉口中的附加的双向路径。
[0062] 图35例示了一些实施例中将八路径交叉口简化为四个分支,其中右侧分支的角 度相对于水平线的偏离为右侧出口路径偏离的一半,因为右侧入口路径位于水平线上。
[0063] 图36例示了一些实施例中将另一八路径交叉口简化为五个分支。
[0064] 图37概念性地例示了一些实施例的用于点型交叉口的数据结构的一个示例。
[0065] 图38例示了一些实施例的用于环岛交叉口的数据结构。
[0066] 图39概念性地例示了 一些实施例中将环岛交叉口简化为交叉口数据。
[0067] 图40概念性地例示了一些实施例的用于修改交叉口数据以便提供用于路线的导 航息的过程。
[0068] 图41例示了通过交叉口时所走的路线的概念绘图、用于该交叉口的数据结构、和 修改该数据结构以便生成用于逐向导航指令的新数据结构。
[0069] 图42例示了一些实施例中地图绘制应用程序显示不同类型的图形指示器箭头来 向用户视觉地表示操控的几个不同场景。
[0070] 图43例示了一些实施例中用于同一转弯的几个场景、以及这些不同箭头可如何 用于这同一转弯。
[0071] 图44概念性地例示了一些实施例的用于在路线检测期间显示图形指示器的过 程。
[0072] 图45概念性地例示了一些实施例的在这样的路线上执行导航的过程。
[0073] 图46概念性地例示了为路线的操控生成此类图形方向指示器的过程。
[0074] 图47概念性地例示了一些实施例中试图将沿路线的交叉点的分支的角度设置为 预先指定的角度的倍数的过程。
[0075] 图48例示了一些实施例中的一特定交叉点情形。
[0076] 图49例示了一些实施例中使用默认交叉点/操控指示器代替基于几何形状的指 示器的两个示例。
[0077] 图50例示了一些实施例不使用简化的几何形状的环岛的示例。
[0078] 图51概念性地例示了一些实施例的生成用于不同上下文的方向指示器的地图绘 制应用程序。
[0079] 图52例示了根据一些实施例的用于交叉点处特定操控的不同指令的合成的一个 示例。
[0080] 图53例示了几个不同场景,其中地图绘制应用程序在多个不同情形中为第一交 叉点的特定操控显示自适应指令的不同示例。
[0081] 图54例示了地图绘制应用程序在一些实施例中使用合成的指令集的另外的场 旦 -5^ 〇
[0082] 图55概念性地例示了一些实施例的用于在路线检测期间显示文本指令的过程。
[0083] 图56概念性地例示了一些实施例的在这样的路线上执行导航的过程。
[0084] 图57概念性地例示了一些实施例的用于对编码后的交叉点数据进行解码以及由 从地图服务接收的路线和交叉点数据合成指令元素的过程。
[0085] 图58概念性地例示了一些实施例的用于生成用于在不同上下文中显示的导航指 令变体的过程。
[0086] 图59概念性地例示了包括一些实施例的生成用于不同上下文的文本指令的地图 和导航应用程序的一种系统架构。
[0087] 图60是一些实施例的移动计算设备的架构的一示例。
[0088] 图61概念性地例示了用以实现本发明的一些实施例的电子系统的一个示例。
[0089] 图62例示了根据一些实施例的地图服务操作上下文。

【具体实施方式】
[0090] 在本发明的以下【具体实施方式】中,提出并描述了本发明的许多细节、实例和实施 例。然而,对于本领域的技术人员来说将清楚和显而易见的是,本发明并不限于所示出的实 施例,并且本发明可在没有所讨论的具体细节和实例的情况下被实施。
[0091] I.导航用户界面
[0092] A.启动
[0093] 一些实施例的导航应用程序是包括几个可用模态的集成地图绘制应用程序的一 部分,所述几个有用模态包括位置浏览、地图搜索、路线标识和路线导航操作。这个集成应 用程序(在下文中称为地图绘制应用程序、导航应用程序、或集成应用程序)在一些实施 例中被定义为由具有显示该应用程序的输出的触敏屏幕的设备执行。在一些实施例中,这 个设备具有多点触摸界面,用于允许用户通过屏幕提供触摸和手势输入以与该应用程序交 互。此类设备的示例有智能电话(例如苹果公司售卖的iPhone?、运行Android?操作系统 的电话、运行Windows 8?操作系统的电话等等)。
[0094] 图1例示了执行本发明一些实施例的集成地图绘制应用程序的设备100的一个示 例。这个图还例示了在这个应用程序中发起路线导航的一个示例。这个应用程序具有新型 用户界面(UI)设计,其通过使用最少集合的悬浮在内容上面的屏幕上控件以便尽可能多 地显示内容,来无缝地紧密地集成用于其不同模态中每一者的控件。此外,这个集群适配于 眼前任务,从而在用户在不同模态之间(例如在浏览、搜索、路线规划和导航之间)移动时 以动画方式调节其内容。具有自适应本质的这个公共元素使地图绘制应用程序能够对于不 同任务进行优化,同时当在那些任务之间移动时保持一致的外貌和交互模型。
[0095] 图1示出了与地图绘制应用程序交互的六个阶段105、110、115、117、119、121。第 一阶段105示出了设备的n 120,其在任务栏区域125中以及在n的页面上具有几个应用 程序的几个图标。这个页面上的图标中的一者是用于地图绘制应用程序130的图标。第一 阶段显示了用户通过在设备的屏幕上地图绘制应用程序的位置处与该屏幕的触摸接触而 选择该地图绘制应用程序。
[0096] 第二阶段110显示了在地图绘制应用程序已经打开之后的设备。如这个阶段中所 示,地图绘制应用程序的n具有起始页面,该起始页面在一些实施例中显示(1)设备的当 前位置的地图和(2)设置在顶部条栏140中的以及作为悬浮控件的几个n控件。如图1 中所示,悬浮控件包括指示器145、3D控件150、和卷页控件155,而顶部条栏140包含指引 控件160、搜索栏165、和书签控件170。
[0097] 在一些实施例中,用户可以通过在搜索栏165中轻击来发起搜索。这就指示该应 用程序呈现(1)呈现屏幕上键盘和(2)打开充满重要补全的搜索表格的动画。这个表格 具有一些重要的精妙之处。在搜索栏被轻击时并且在词项被编辑之前,或者在搜索栏为空 时,该表格包含"最近词项"列表,其在一些实施例中是用户已经请求过的最近搜索和路线 指引。这使得非常容易快速地调出最近访问过的结果。
[0098] 在搜索栏上的任何输入之后,该表格被填充以来自本地来源(例如书签、联系人、 最近搜索、最近路线指引等等)和远程服务器的搜索补全。将用户的联系人卡结合到搜索 界面中就为该设计增加了附加的灵活性。在显示最近词项时,从当前位置到用户家的路线 在一些实施例中始终被提供,而在其他实施例中其在被认为是"适当"的上下文中被提供。 此外,在一些实施例中,当搜索词与地址标签的至少一部分(例如"Work"的"ork")匹配 时,该应用程序将用户的带标签的地址作为补全呈现在搜索表格中。这些行为一起使得搜 索UI成为一种强有力的方式来从多个来源获得结果到地图上。除了允许用户发起搜索之 夕卜,一些实施例中主地图视图中文本字段的呈现还允许用户看到对应于地图上搜索结果的 查询以及通过清除该查询来移除那些搜索结果。
[0099] 书签控件170 (例如按钮)允许该应用程序对位置和路线加书签。位置指示器145 允许设备的当前位置被具体地标记在地图上。一旦这个指示器被选择,该应用程序就将设 备的当前位置保持在地图中央。在一些实施例中,其还可以标识设备当前指向的方向。
[0100] 3D控件150是用于三维(3D)地查看地图或检测路线的控件。地图绘制应用程序 提供该3D控件作为进入和退出3D的一种快速机制。这个控件还用作(1)关于当前视图是 3D视图的指示器、(2)关于3D透视可用于某个地图视图的指示器(例如,被缩小的地图视 图可能没有3D视图可用)、(3)关于3D透视不可用的指示器(例如对于地图区域没有3D 数据可用)、和(4)关于在这个给定缩放水平有空拍图动画可用的指示器。3D控件可以提 供对应于每个指示的不同外观。例如,3D控件可以在3D视图不可用时被着以灰色,在3D视 图可用但是地图处于2D视图中时被着以黑色,在地图处于3D视图中时被着以蓝色。在一 些实施例中,在对于地图上用户的给定缩放水平和位置有空拍图动画可用时,3D控件变为 建筑物图像。
[0101] 卷页控件155是通过将某些较不常用的动作放置在能通过显示在地图上的卷页 控件访问的次UI屏幕中来允许该应用程序使屏幕上控件的数量最少的一种控件。在一些 实施例中,卷页被永久地显示在该应用程序提供的地图视图中的至少一些地图视图上。例 如,在一些实施例中,该应用程序在起始页面上永久地显示卷页(例示在第二阶段110中), 其提供来用于允许用户浏览或搜索位置或者标识路线。
[0102] 指引控件160打开指引输入页面180,用户通过该页面可以请求在起始位置和结 束位置之间标识的路线。图1的第三阶段115例示了对指引控件160的选择就打开指引输 入页面180,该页面在第四阶段117中被示出。指引控件是可以用来指示地图绘制应用程序 标识和显示两个位置之间的路线的三个机制中的一者;另外两个机制是(1)为地图中所选 项目显示的信息标幅中的控件、(2)在搜索栏165中显示的设备所标识的最近路线。因此, 信息标幅控件和搜索栏165是该应用程序用来使不同模态之间的转换无缝的两个UI工具。
[0103] 第四阶段117示出了指引输入页面180包括用于提供路线的起始和结束位置的 起始和结束字段、和列出该应用程序已经提供给用户的最近路线的表格。这个页面上的其 他控件是用于开始路线、用于将起始位置和结束位置对调、用于取消指引请求、用于挑选步 行、驾车、或公交路线的控件。这些控件和地图绘制应用程序的其他方面在提交于2012年 9月30日的名称为"Problem R印orting in Maps"的美国专利申请13/632, 102中进行了 描述。美国专利申请13/632, 102以引用方式并入本文。
[0104] 第四阶段例示了用户选择被自动填充在表格182中的最近方向中的一者。第五阶 段119然后在2D地图视图上显示在通过页面180指定的所指定起始和结束位置之间的三 条路线。其还示出了选择第二路线以及在布局顶部的条栏中显示了关于这条路线的一些信 息。这个条栏被显示为包括开始和结束按钮。在第五阶段中,开始按钮被显示为被选中。
[0105] 如第六阶段中所示,对开始按钮的选择就指示该应用程序进入逐向导航模式。在 这个示例中,该应用程序已经进入2D逐向导航模式。在其他实施例中,该应用程序将默认 地进入3D逐向导航模式。在这个模式中,该应用程序显示逼真的标志184,其标识在所导航 路线中从设备的当前位置到下一交叉点操控的距离以及一些其他相关信息。在其他实施例 中,该应用程序还显示顶部条栏,其包括关于导航的一些信息以及分别用于结束导航和获 得所导航路线的剩余部分或所导航路线的整个部分的概览的结束和概览按钮。
[0106] 一些实施例的地图绘制应用程序利用该设备在设备位置处所接收的GPS信号中 的坐标(例如经度、高度、和纬度坐标)标识设备位置。另选地或结合地,地图绘制应用程 序使用其他方法(例如蜂窝塔三角测量)来计算当前位置。在携带该设备的用户偏离路线 时,一些实施例的地图绘制应用程序追踪设备的位置并且从偏离后的位置重新计算新的路 线以便将用户从偏离后的位置重新引导到目的地位置。换言之,工作于导航模式中的一些 实施例的地图绘制应用程序要求设备始终在路线上。
[0107] 该应用程序还显示悬浮3D控件和悬浮列表控件,它们在上文中已经介绍过。应当 指出的是,列表控件是在进入路线检测和路线导航模态时自适应地添加到悬浮控件集群, 而位置指示器是在进入路线导航模态时从悬浮控件中移除。此外,在从路线检测模式转到 路线导航模式时,该应用程序在一些实施例中执行涉及在该应用程序转入导航呈现之前卷 页完全舒展开的动画。
[0108] 在一些实施例中,这个动画过渡包括在启动导航呈现后一短时间段,从导航呈现 中移除顶部条栏、其相关联控件和悬浮控件,以及将标志184移动到呈现的顶部边缘。如下 文中进一步所述,在一些实施例中,该应用程序要求用户在所导航地图上轻击来恢复顶部 条栏、其控件和悬浮控件,并且要求另一轻击来再次从地图中将它们移除。其他实施例提供 其他机制用于查看和移除这些控件。
[0109] 作为允许用户获得导航体验的另一方式,一些实施例的地图绘制应用程序在信息 标幅中提供UI项目,该UI项目通过表示兴趣点(P0I)的图钉来显现。图2例示了关于用 户与地图绘制应用程序交互以获得路线规划方向的三个阶段205-215的一个示例。这个示 例是在使用汽车图标230的上下文中提供的。
[0110] 第一阶段205例示了 3D地图视图中的地图。如图所示,3D控件250显示为高亮 以指示地图处于3D地图视图中。第一阶段205还例示了通过运行如图所示的搜索查询为 "Pizza"的搜索而得到的用于搜索的两个图钉的两个信息标幅。用户选择汽车图标230。如 上所述,汽车图标230用于显示到由包括汽车图标230的标幅相关联的图钉表示的位置的 一条或多条路线。包括汽车图标230的标幅240还示出了该场所的简要描述、星级评定、和 用于发起用于该P0I的"舞台"的箭头。
[0111] 第二阶段210例示了一些实施例的地图绘制应用程序响应于在前一阶段205中选 择汽车图标230而显示的两条路线:路线1和路线2。用户已经选择了路线1,这通过路线 1上的高亮来表示。用户还选择了开始按钮。如上所述,一些实施例中的开始按钮是用于启 动根据所选路线的导航。
[0112] 第三阶段215例示了地图绘制应用程序显示指令标志260,其为用于第一指令的 标志。地图绘制应用程序在顶部条栏140中已经用结束按钮270和概览控件275代替了清 除控件255和开始按钮。结束按钮用于结束路线的导航,概览控件275用于如果为了显示 整条路线必须调节缩放水平的话,通过调节所显示地图的缩放水平来在地图视图中显示整 条路线。在一些实施例中,如图所示,地图绘制应用程序在顶部条栏140中显示ETA、到达目 的地所需的时间量、和到达目的地还剩余的距离。
[0113] 当地图绘制应用程序在地图绘制应用程序工作于路线检测模式中期间接收到对 结束按钮的选择时,一些实施例的地图绘制应用程序通过返回到地图浏览模式而停止对所 选路线的检测。一些实施例的地图绘制应用程序通过从地图中移除所选路线、放回卷页、以 及用包括指引控件、搜索栏、和书签控件的一组其他控件替换顶部条栏中的信息和控件,来 返回到地图浏览模式。也就是说,地图绘制应用程序将n页面的外观返回到与第一阶段 205中所示的n页面类似的n页面。一些实施例的地图绘制应用程序在从检测模式切换 到地图浏览模式时,不将地图转移到另一区域。
[0114] B. 2D 和 3D 导航
[0115] 一些实施例的导航应用程序可以以2D模式或3D模式显示导航。如上所述,悬浮 控件中的一者为3D控件250,其允许用户查看三维(3D)的导航呈现。图3例示了一些实施 例的导航应用程序如何提供3D控件250作为进入3D导航模式的一种快速机制。这个图在 三个阶段305-315中例示了这个操作。第一阶段305例示了用户在查看二维导航呈现期间 选择3D控件150。
[0116] 第二阶段310例示了在过渡到3D呈现的过程中的导航呈现。如这个图中所示,3D 控件在这个阶段中显现为高亮,以指示导航呈现已经进入3D模式。如上所述,导航应用程 序在一些实施例中通过从三维场景中可以被概念性地视为正在捕获地图视图的虚拟相机 的位置的特定位置渲染地图视图来生成所导航地图的3D视图。这个渲染在下文中参考图 5进一步描述。
[0117] 第三阶段315然后例示在过渡到其3D外观中完成时的导航呈现。如第二和第三 阶段中建筑物高度之间的差别所示,从2D到3D导航的过渡在一些实施例中包括显示所导 航地图中的三维对象变得更大的动画。在提交于2012年9月30日的名称为"Displaying 3D Objects in a 3D Map Presentation"的美国专利申请13/632, 027中介绍了生成此类 的显示对象升高/降低及变得更大/更小的动画。美国专利申请13/632, 027以引用方式 并入本文。
[0118] 一些实施例使用从2D地图视图到3D地图视图或者反方向的影片过渡。例如,在 地图绘制应用程序在显示路线的起始位置期间接收到对3D控件250的选择时,地图绘制应 用程序从2D地图视图开始并且平滑地从用于2D的第一虚拟相机视图过渡到进一步放大并 且指向路线起点方向的新的虚拟相机3D视图。这样,虚拟相机执行平移、缩放、和旋转操作 的组合,以便到达用于导航的路线的起点。也就是说,虚拟相机在弧线上移动并且在相机沿 该弧线向下移动时向上旋转。另外,地图绘制应用程序可以旋转弧线自身,以将虚拟相机视 点对准路线的初始道路区段。换言之,地图绘制应用程序在影片过渡期间旋转地图。
[0119] 图4通过六个阶段405-430例示了在地图绘制应用程序从用于地图浏览的非沉浸 式地图视图过渡到用于导航的沉浸式地图视图时显示该应用程序的设备400。
[0120] 第一阶段405例示了用户为位置"Pizza Place"选择了快速路线按钮以便生成从 用户的当前位置(设备400的屏幕中央附近)到所选位置的路线。第二阶段410例示了地 图绘制应用程序显示前往位置"Pizza Place. "的路线435。在第二阶段410,用户选择了 "开始" n控件440。因此,该应用程序开始进入导航。
[0121] 如第三到第六阶段415-430所示,一些实施例使用从2D(或3D)非沉浸式地图视 图到3D沉浸式地图视图的影片过渡。该应用程序显示从其当前状态(在410显示)开始, 并且平滑地从第一虚拟相机视图过渡到进一步放大并且指向路线起点方向的新的虚拟相 机视图。这样,虚拟相机可以执行平移、缩放、和旋转操作的组合,以便到达用于导航的路线 的起点。如这些阶段中所示,虚拟相机移动并旋转到第六阶段430中所示的导航位置指示 器(即圆块)后面的其最终位置。
[0122] 此外,在一些实施例中,地图绘制应用程序提供两个不同类型的3D呈现:沉浸式 3D呈现和非沉浸式3D呈现。沉浸式呈现在一些实施例中不仅显示更多几何形状,而且为在 非沉浸式呈现中显示的几何形状显示更多细节。地图绘制应用程序还提供非沉浸式和沉浸 式呈现之间的平滑过渡。
[0123] 为了实现这样的平滑过渡以及生成其它新型效应,一些实施例的地图绘制应用程 序使用一种新型图像处理流水线。这个流水线执行多个预加载操作以下载、检索和/或解 压缩导航呈现所需要的地图图块、准备其用于其渲染操作的渲染流水线、和准备用于在沉 浸式和非沉浸式3D呈现之间平滑过渡的复制流水线。为了显示沉浸式和非沉浸式3D地 图呈现,一些实施例必须生成多个图块供客户端设备渲染以便生成道路、建筑物和周围景 物。在一些实施例中,此类图块的示例包括用于非沉浸式3D呈现的道路和建筑物图块、和 用于沉浸式3D呈现的导航和建筑物图块。这个流水线在提交于2012年9月30日的名称 为"Problem Reporting in Maps"的美国专利申请13/632, 102中进行了描述。这个流水 线还在提交于2012年9月30日的名称为"Virtual Camera for 3D Maps"的美国专利申 请13/632,040中进行了描述。美国专利申请13/632,040以引用方式并入本文。
[0124] 在一些实施例中,非沉浸式和沉浸式查看模式是用于查看具有不同构建体和/或 几何形状的不同3D地图的查看模式。例如,一些实施例的非沉浸式查看模式用于查看包括 道路、建筑物、土地覆盖等的3D地图。沉浸式查看模式用于查看包括与用于非沉浸式查看 模式的3D地图相同或类似的元素(例如道路、建筑物、土地覆盖等)的更详细的3D地图。 但是,这个更详细的3D地图还包括提供更逼真和丰富的3D地图的更高细节的构建体(例 如树、叶、行人步道、隔离带、道路车道、道路浙青、隔离带、人行横道等)。
[0125] 此外,非沉浸式和沉浸式查看模式可以被定义用于以不同的缩放水平范围查看3D 地图。例如,一些实施例的非沉浸式查看模式被定义用于以低缩放水平(例如缩放水平 0-14)查看3D地图,而一些实施例的沉浸式查看模式被定义用于以高缩放水平(例如缩放 水平16-21)查看3D地图。在不同实施例中,查看模式可以被定义为查看任意数量的不同 缩放水平。在一些情况下,沉浸式查看模式的缩放水平范围被定义为是相对于为非沉浸式 查看模式定义的缩放水平更高、更低、相同、或重叠的缩放水平。这些查看模式和地图绘制 应用程序的其他方面在提交于2012年9月30日的名称为"Virtual Camera for 3D Maps" 的美国专利申请13/632, 040中进行了描述。美国专利申请13/632, 040以引用方式并入本 文。?
[0126] 1.虚拟相机
[0127] 一些实施例的导航应用程序能够从多个透视显示导航地图。该应用程序可以在三 维(3D)或二维(2D)中显示地图。模仿虚拟相机所看到的虚拟场景来生成3D地图。图5呈 现了一个简化示例来例示虚拟相机512的概念。在渲染3D导航地图时,虚拟相机是3D地 图场景中设备从那里渲染该场景的3D视图的位置的概念化。图5例示了包括四个对象的 3D导航地图场景510中的位置,这四个对象是两个建筑物和两个相交的道路。为了例示虚 拟相机概念,这个图例示了三个情景,其中每一个对应于不同虚拟相机位置(即不同渲染 位置)和在设备上显示的不同的所得到的视图。
[0128] 第一阶段501显示虚拟相机512位于第一位置以一角度(例如30度角)向下朝 向3D场景510指向。通过从阶段501中所示的位置和角度渲染3D场景,该应用程序生成 3D地图视图518。从这个位置,相机正指向作为设备前方的移动位置的位置。虚拟相机512 保持在设备的当前位置后面。"在当前位置后面"在这个情况下是指以与设备正在移动的当 前方向相反的方向沿导航应用程序的所限定路径向后。
[0129] 导航地图视图518看起来好像其是由相机在设备的位置指示器516后面从上面拍 摄的一样。虚拟相机的位置和角度将位置指示器516放置在导航地图视图518的底部附近。 这还导致屏幕的大部分被填充以设备的当前位置前方的街道和建筑物。相反,在一些实施 例中,位置指示器516位于屏幕中央,屏幕的一半表示设备前方的事物,而另一半表示设备 后方的事物。为了简化附图,对于视图518、528、和538没有描绘道路标志。
[0130] 第二阶段502显示了虚拟相机512位于另一位置,以更大的第二角度(例 如-45° )向下朝向场景510指向。该应用程序从这个角度渲染场景510,从而得到3D导 航地图视图528。建筑物和道路比其在第一导航地图视图518中的显示小。再一次,虚拟 相机512在场景510中位置指示器516后面上方。这又再次导致位置指示器出现在3D地 图视图528的下面部分中。相机的位置和取向也再次导致屏幕的大部分显示位置指示器 516(即携带该设备的车辆的位置)前方的事物,这是进行导航的人需要知道的。
[0131] 第三阶段503显示了虚拟相机512位于俯视视图,其向下看向先前用来渲染3D视 图518和528的3D地图场景510中的一个位置。从这个透视渲染的场景是2D地图视图 538。与在一些实施例中是透视3D渲染操作的第一阶段和第二阶段的3D渲染操作不同,第 三阶段中的渲染操作相对简单,因为其只需要裁剪由该应用程序或用户所指定的缩放水平 标识的2D地图的一部分。因此,在这种情形中的虚拟相机表征在一定程度上不必要地使该 应用程序的操作的描述复杂化,因为裁剪2D地图的一部分不是透视渲染操作。
[0132] 在第三阶段503, 一些实施例中的地图绘制应用程序在相机从3D透视视图切换到 2D俯视视图时从自特定透视方向渲染3D场景切换到裁剪2D场景。这是因为在这些实施例 中,该应用程序被设计用于使用更简单的并且不生成不必要的透视人工痕迹的简化渲染操 作。但是,在其他实施例中,地图绘制应用程序使用透视渲染操作来从俯视虚拟相机位置渲 染3D场景。在这些实施例中,所生成的2D地图视图在一定程度上不同于在第三阶段503 中所例示的地图视图538,因为不在视图中央的任何对象都变形,其中对象距离视图中央的 距离越远,变形越大。
[0133] 虚拟相机512在不同实施例中沿不同轨线移动。在图5中例示了两个这样的轨线 550和555。在这两个轨线中,相机在弧线中移动并且在相机沿弧线向上移动时向下旋转。 轨线555与轨线550的不同之处在于在轨线555中,相机在其沿弧线向上移动时从当前位 置向后移动。
[0134] 在沿这些弧线中的一者移动的同时,相机旋转以将位置指示器前方的一个点保持 在相机的焦点处。在一些实施例中,用户可以关闭三维视图,而以纯二维视图前进。例如, 一些实施例的该应用程序允许利用3D按钮560来开启和关闭三维模式。3D按钮560对于 逐向导航特征而言是必要的,因为其具有指示器和切换器的功能。当3D被关闭时,相机将 保持2D导航体验,但是当3D被开启时,在3D查看角度不适当时(例如当绕过在3D模式中 会被阻挡的拐角时)仍然可能存在某些俯视透视。
[0135] 2. 3D 控件
[0136] 图6在六个不同阶段605-630中例示了一些实施例的地图绘制应用程序改变3D 控件的外观以指示地图视图的不同2D和3D状态。第一阶段605例示了地图绘制应用程序 正在显示地图和包括3D控件150的悬浮控件。如图所示,地图绘制应用程序正在以某个低 缩放水平(地图还没有被放大太多)在2D中显示地图。3D控件150利用第一外观(例如 灰色字母"3D")被显示以指示在这个特定缩放水平没有3D地图数据可用。第一阶段605 还显示了地图绘制应用程序正在接收用户的放大地图(即提高缩放水平)的手势输入。
[0137] 第二阶段610显示了地图绘制应用程序正在以比前一阶段605中更高的缩放水平 显示地图。但是,3D控件150正保持第一外观,因为即使在这个特定的更高缩放水平仍然没 有3D地图数据可用。第二阶段610还显示了地图绘制应用程序正在接收进一步放大地图 的另一手势输入。
[0138] 第三阶段615显示了地图绘制应用程序正在以比前一阶段610中更高的缩放水平 显示地图。地图绘制应用程序已经将3D控件150的外观改变为第二外观(例如黑色字母 的"3D")以指示在这个缩放水平有3D地图数据可用。在地图绘制应用程序接收到对3D控 件150的选择时,一些实施例的地图绘制应用程序会将3D控件150的外观改变为第三外观 (例如蓝色字母的"3D")并且在3D中显示地图(例如通过从用于2D的直向下视图改变为 透视视图)。第三外观因此会指示地图是在3D中显示。第三阶段615显示了地图绘制应 用程序正在接收用于将地图甚至进一步放大到更高缩放水平的再另一手势输入。第三阶段 615显示了地图绘制应用程序在这个缩放水平正将地图中的建筑物显示为灰色盒体。
[0139] 第四阶段620显示了地图绘制应用程序正以比前一阶段615更高的缩放水平显示 地图。地图绘制应用程序已经将3D控件150的外观改变为第四外观(例如如图所示的第 一颜色的建筑物图标)以便指示在这个缩放水平有用于渲染沉浸式3D地图视图的3D沉浸 式地图数据可用。第四阶段620还显示了一些实施例的地图绘制应用程序正在接收对3D 控件150的选择。
[0140] 第五和第六阶段625和630显示了地图绘制应用程序在开始提供3D沉浸式地图 视图之后提供的后续视图(但是不必然是连续视图)。在一些实施例中,在第五和第六阶段 之间缩放水平不改变,但是地图视图中建筑物的高度增大以提供表明视图正从2D视图移 动进入3D沉浸式地图视图的动画。此外,从第四阶段620到第五阶段625,地图绘制应用程 序已经将3D控件的外观改变为第五外观(例如如图所示的第二颜色的建筑物图标),以便 指示地图是在3D沉浸式视图中显示。
[0141] 3.视图的自动改夺
[0142] 一些实施例的该应用程序允许使用任何特定的虚拟相机角度,而不仅仅是这里所 指出的30度和60度角度。一些实施例的该应用程序允许用户设置相机的向下角度。一些 实施例的该应用程序出于多种原因(例如为了将特定焦点保持在屏幕顶部附近)自动地调 节相机的角度。在再一些实施例中,导航应用程序自动地设置相机的角度,但是允许用户否 决自动设置的角度。
[0143] 在一些实施例中,当在3D模式中运行导航应用程序的设备就要到达具有转弯的 交叉点时,导航应用程序切换到2D模式以便使用户能够更清楚地识别这个转弯。图7例示 了一些实施例的从3D模式到2D模式的切换。在五个阶段701-705中示出了这个图。在阶 段701中,该应用程序在3D视图中显示导航地图。导航框710显示50英尺后右转。如果 位置标识符714 -样,地图712是3D的。
[0144] 随着设备在阶段702中接近交叉点(如导航框720所示),3D地图712切换到2D 地图722,其中位置指示器724也为2D的。地图绘制应用程序还改变3D控件150的外观以 指示地图现在是2D的。在设备在阶段703中绕过该拐角时,地图722保留在2D中。随着 设备绕过该拐角,阶段703中具有指令"右转进入A街"的导航框730在阶段704中被具有 指令"在A街上继续直行0. 5英里"的导航框740代替。地图在阶段704中保持为2D,直到 该拐角已经完全被导航,在那时,在阶段705,地图返回到3D视图,在导航框750中具有新的 指令"〇. 3英里后,目的地将在您左侧"。地图绘制应用程序还已经改变3D控件150的外观 以指不地图现在回到3D中。
[0145] 在一些实施例中,导航应用程序为每次位置更新(例如每秒一次)确定以下五条 信息中的一些或全部。第一,导航应用程序确定基准点的位置(即用户的位置)。
[0146] 第二,导航应用程序确定虚拟相机的焦点的位置,其被用来确定虚拟相机应该面 向哪个方向。如果用户偏离了路线,则焦点将在沿用户行进方向(如果可以确定的话)用 户前方固定距离处或者用户北方固定距离处(如果不能确定用户行进方向的话)。如果用 户在路线上,则焦点将在沿该路线用户前方固定距离处,从用户到这个焦点的矢量与用户 的行进方向之间的角度上限为一最大值。这就允许虚拟相机在用户实际转弯之前绕过转弯 进行隐约窥视。例如,如果路线在前方很近的地方转过拐角,则焦点将是从设备的当前位置 绕过该拐角的一个点。因为转动虚拟相机面对那个实际点可能会导致虚拟相机直接面对建 筑物,所以针对虚拟相机可以偏离当前方向可以看多远对虚拟相机施以了上限。第三,导航 应用程序确定兴趣点的位置(例如即将到来的交叉口的位置)。
[0147] 第四,导航应用程序确定虚拟相机视图样式(俯视居中、俯视向前、或屋顶)。"俯 视居中"是指虚拟相机应该直向下俯视用户的位置,使得用户的位置位于屏幕中央。"俯视 向前"是指虚拟相机应该直向下俯视用户的位置,使得用户的位置朝屏幕的底部。"屋顶"是 指虚拟相机应该在用户位置后面并且俯仰使得其正沿从用户位置到焦点的矢量向前看。如 果用户偏离路线或者用户的行进方向不能确定(例如在用户停好车时),则虚拟相机将处 于俯视居中视图样式中。否则,视图样式将通过用户是否已经请求了"2D"导航来确定。如 果用户已经请求了 2D导航,则视图样式将为俯视向前。否则,视图样式将为屋顶。
[0148] 第五,导航应用程序确定虚拟相机对焦样式(例如巡航或硬对焦)。"巡航对焦样 式"是指虚拟相机应该基于视图样式采用预设高度和俯仰角度。"硬对焦"是指虚拟相机应 该调节其高度(在俯视居中或俯视向前视图样式的情况下)或俯仰(在屋顶视图样式的情 况下)使得给定的兴趣点正好在屏幕上(即虚拟相机应该在用户接近兴趣点时对焦在其 上)。当远离交叉口时,导航应用程序将虚拟相机置于巡航对焦模式中。当接近"感兴趣"的 交叉口时,导航应用程序将虚拟相机置于如上所述的硬对焦模式中,并且交叉口(兴趣点) 的位置将被传递给虚拟相机。当在硬对焦模式中时,该应用程序调节虚拟相机的高度(在 俯视居中或俯视向前视图样式的情况下)或俯仰(在屋顶视图样式的情况下),使得交叉口 位于屏幕上适当的位置处。利用用户将以何角度离开给定交叉口来确定这个交叉口是足够 "感兴趣"以聚焦在上面。如果该角度足够大(例如90度右转),则交叉口被认为是"感兴 趣"的,并且虚拟相机将聚焦在其上。如果角度太小(例如并上公路),则虚拟相机将保持 在巡航对焦模式中。
[0149] 根据这五条信息,导航应用程序计算虚拟相机的期望位置和取向。从所述期望位 置和取向,可以获得以下三个关键点的位置:(1)虚拟相机的位置、(2)虚拟相机的向前矢 量与地面之间的交点、和(3)沿虚拟相机右矢量的点。这三个点相互独立地动画显示如下: (1)在有新的点可用时,该应用程序在用于该点的最后估计的位置/切线和这个新的点之 间拟合三次多项式,以及(2)对于动画的每个步骤,导航应用程序为每个曲线估计这些三 次多项式并且从中提取虚拟相机位置和取向。
[0150] 4.相机高度的用户调节
[0151] 除了(或代替)使导航应用程序控制相机(例如在绕过拐角时从3D变为2D),一 些实施例还允许用户调节相机的水平。一些实施例允许用户用两根手指进行命令手势来调 节相机的距离(高度)和角度。一些实施例甚至允许多种类型的手势来控制相机。图8例 示了通过收缩和扩展手势调节虚拟相机的距离。这个图以三个阶段801-803示出。在阶段 801中,该应用程序显示基本场景810,其中虚拟相机812位于用于3D查看的默认水平,屏 幕视图814是从场景810渲染的。基本场景包含两个建筑物和一 T型交叉点。在阶段801 中,建筑物是从45度向下角度以及使其看起来为特定尺寸的特定高度查看的。位置指示器 816也以特定尺寸被显示。
[0152] 在阶段802,用户通过在屏幕视图824上将两根手指相互靠近地放置在设备的屏 幕上并且在它们位于屏幕上期间移动这些手指使其分开,来进行手势。移动这些手指使其 分开就具有使地图(手指之间的部分和地图的其余部分二者)更大的效果。为了使地图中 的事物看起来更大,该应用程序使虚拟相机812拉近镜头。在一些实施例中,地图绘制应用 程序用来使虚拟相机812沿其移动的线条850是虚拟相机812的正面与虚拟相机812的焦 点形成的线条。一些实施例的地图绘制应用程序沿由虚拟相机812的正面和3D地图810 中基于用户输入的位置形成的线条移动虚拟相机812,以放大到3D地图810的视图中。
[0153] 在阶段802的放大之后,用户对于阶段803决定缩小。在这个阶段,用户已经将两 根手指放置在屏幕上并且使它们更靠近到一起。使这些手指更靠近到一起就具有缩小地图 (手指之间的部分和地图其余部分二者)的效果。缩小调节是通过沿线条855移动虚拟相 机812进一步远离3D地图810来实现的。在一些实施例中,地图绘制应用程序用来使虚拟 相机812沿其移动的线条855是由虚拟相机812的正面和虚拟相机812的焦点形成的线条。 一些实施例的地图绘制应用程序沿由虚拟相机812的正面和3D地图810中基于用户输入 的位置形成的线条移动虚拟相机812,以放大到3D地图810的视图中
[0154] 利用这个位置处的虚拟相机812渲染3D地图视图就得到3D地图视图834,其中建 筑物和街道看起来比3D地图视图824中所显示的位置更远。如虚拟相机812的虚线版本 所示,虚拟相机812沿线条855移动进一步远离3D地图810。
[0155] 除了能通过放大和缩小控制之外,一些应用程序还允许用户改变虚拟相机的角 度。图9例示了角度可以通过手势调节的相机的一个实施例。这个图在三个阶段901-903 中示出。在阶段901中,相机以45度向下指向场景910。场景910包含两个建筑物和一 T 型交叉点,它们在场景视图914中显示。建筑物是从特定角度和特定尺寸显示的。位置指 示器916也以特定尺寸被显示。
[0156] 在阶段902中,用户已经将两根手指920相互近似水平地放置在屏幕上并且向上 拖动。这具有用手指将场景向上拖动的明显效果。场景上升是通过虚拟相机912降低并将 其视角从45度改变到30度来实现的。在场景视图924中,建筑物和位置指示器看起来比 阶段901中高。
[0157] 在用户在阶段902中将场景向上拖动之后,用户然后在阶段903中将场景向下拖 动。为此,用户再次将两根手指930放置在屏幕上并且将它们向下拖动。这就将场景与手 指930 -起向下拖动。场景降低是通过虚拟相机912上升并且将其与场景910的角度改变 为向下60度来实现的。与阶段901中相比,在阶段903中,相机912已经进一步向上移动, 并且向下角度更大。因此,建筑物和位置标识符916在阶段903中又一次比阶段901中看 起来更短和更小。
[0158] 在一些实施例中,地图绘制应用程序为不同操作(例如平移、旋转、从2D进入到 3D)提供惯性效应。在用户提供特定类型的输入(例如以比阈值速度大的速度终止的输 入)来平移3D地图时,地图绘制应用程序生成惯性效应,该惯性效应使3D地图继续平移并 且减速以停止。惯性效应在一些实施例中为用户提供了模拟真实世界中行为的与3D地图 更逼真的交互。惯性效应的细节以及惯性效应的实现在提交于2012年9月30日的名称为 "Virtual Camera for 3D Maps"的美国专利申请No. 13/632, 040中进行了描述;美国专利 申请13/632, 040以引用方式并入本文。
[0159] -些实施例的该应用程序允许独立地控制相机的距离和角度。例如,其允许通过 收缩和扩展手指手势来控制距离以及通过拖动水平放置的手指来控制角度。其他实施例 使用正在执行的任何手势来设置相机的距离或角度,而另一变量被自动设置。虽然图8和 9显示了按某个方向执行手势导致某些结果,但是在一些实施例中,这些手势中一者或二者 可以是相反方向的。例如,在一些实施例中,将水平放置的手指向下拖动可以使相机降低, 而不是使场景降低。这会具有在手指向上移动时将场景向下移动、而在手指向下移动时将 场景向上移动的效果。
[0160] 图10概念性地例示了一些实施例的地图绘制应用程序所提供的用于将虚拟 相机的位置保持在沿弧线的限定范围内的特征。具体地,图10例示了在三个不同阶段 1005-1015的虚拟相机1000,这三个不同阶段显示了保持在弧线1050的限定范围内的虚拟 相机1000的位置。如图10中所示,3D地图1035中的一位置包括两个建筑物和形成T型交 叉点的两个道路。
[0161] 第一阶段1005显示了位于沿弧线1050的特定位置处的虚拟相机1000。如图所 示,弧线1050表示虚拟相机1000在其中能够移动的限定范围(例如角度范围)。第一阶段 1005还显示了沿弧线1050的三个位置1055-1065(例如透视视图角度)。在这个示例中, 以与上文中参考图9所示类似的方式,地图绘制应用程序沿弧线1050在弧线1050的高透 视端(例如在虚拟相机1000最向下倾斜时沿弧线1050的位置)和位置1055之间移动虚 拟相机1000。在第一阶段1005中基于虚拟相机1000的位置渲染3D地图视图就得到3D地 图视图1025。
[0162] 当虚拟相机1000在朝向弧线1050的低透视端移动期间经过位置1055时,地图绘 制应用程序降低虚拟相机1000朝向弧线1050的低透视端移动的速度(例如减速),而不管 用户提供何种输入。在一些实施例中,地图绘制应用程序以恒定速率降低虚拟相机1〇〇〇的 速度,而在其他实施例中,地图绘制应用程序以指数速率降低虚拟相机1000的速度。在一 些实施例中使用用于降低虚拟相机1000的速度的附加的和/或不同的方法。
[0163] 第二阶段1010显示了虚拟相机1000已经沿弧线1050移动到弧线1050的低透视 端处或附近的位置。如图所示,用户正通过将两个手指在屏幕上触摸并且在向上方向上拖 动这两个手指(例如轻扫手势)提供用于调节3D地图1035的视图透视的输入。响应于该 输入,地图绘制应用程序将虚拟相机1000朝向弧线1050的低透视端移动,同时将虚拟相机 1050向上倾斜。当虚拟相机到达沿弧线1050的位置1065时,地图绘制应用程序阻止虚拟 相机1000移动得更低超过位置1065,即使在用户继续提供降低3D地图1035的视图透视的 输入(例如用户继续在触摸屏上向上拖动这两根手指)时也是这样。
[0164] 在一些实施例中,当用户停止提供用于降低3D地图1035的视图透视的输入(例 如用户将这两根手指提起离开触摸屏)时,地图绘制应用程序将虚拟相机1000的位置从位 置1065 "反弹"或"回跳"直到沿弧线1050的位置1060。因为地图绘制应用程序在反弹或 回跳运动期间正基于虚拟相机1000的视图生成或渲染3D地图1035的3D地图视图,所以 所生成的3D地图视图提供显示3D地图视图短暂地向下反弹或回跳的反弹动画,以便向用 户指示地图视图的透视不能进一步降低。利用位于这个角度的虚拟相机1000来渲染3D地 图视图就得到3D地图视图1030,其中建筑物和道路与地图视图1025相比更高。
[0165] 第三阶段1015显示了在地图绘制应用程序响应于用户停止提供输入而已经将虚 拟相机1000的位置反弹或回跳到位置1060时的虚拟相机1000。不同实施例使用不同技 术来实现虚拟相机1000的反弹或回跳。例如,一些实施例的地图绘制应用程序开始沿弧线 1050快速地加速虚拟相机1000某一限定距离或者直到虚拟相机1000达到限定速度。然 后,地图绘制应用程序对于沿弧线1050直到位置1060的剩余距离对虚拟相机1000减速。 在一些实施例中使用其他方式来实现反弹或回跳效应。在第三阶段1015中利用位于沿弧 线1050的位置1060处的虚拟相机1000渲染3D地图视图就得到3D地图视图1040,其中与 地图视图1030相比,建筑物看起来略微更小和更平,道路看起来略微更小。
[0166] 如上所述,图10例示了一种用于阻止虚拟相机移动超过弧线低透视端的技术。替 代地或者与阻止虚拟相机移动超过弧线的低透视端结合地,一些实施例的地图绘制应用程 序利用类似的技术来阻止虚拟相机移动超过弧线的高透视端。此外,图10显示了沿弧线的 在那里对虚拟相机减速的位置、沿弧线的用于阻止虚拟相机移动通过的位置、和沿弧线的 虚拟相机回跳或反弹返回到的位置的一个示例。不同实施例以任意数量的不同方式限定这 些位置。例如,在一些实施例中,沿弧线的在那里对虚拟相机减速的位置与沿弧线的虚拟相 机回跳或反弹返回到的位置相同或相邻。
[0167] C.其他用户夺互
[0168] 1.显现和消除控件
[0169] 一些实施例的该应用程序在导航期间具有全屏模式。也就是说,在方向的实际提 供期间,通常占据一些屏幕表面的控件被隐藏。图11例示了一些实施例的全屏模式。这个 图在六个阶段1101-1106中显示。在阶段1101中,通过选择开始按钮1110,激活一组导航 指令。通过选择开始按钮,用户从两个可能路线中选择被加亮的路线。在阶段1102中,未 加亮的路线消失,并且更小比例的导航地图1121显现。第一阶段1101显示了道路名称在 道路上,因为地图绘制应用程序正在显示地图视图。第一阶段1101还显示了位置控件1130 被显示,因为地图绘制应用程序正在显示地图视图。对列表控件1132的选择将使地图绘制 应用程序以列表格式显示可用的路线。
[0170] 此外在阶段1102中,第一指令1120与结束控件1122、旅程状态区域1124(包括 ETA、旅程一段时间估计、和所计划路线距离指示器)、概览按钮1126、状态栏1127、和3D控 件1128-起被显示。结束按钮1122结束导航指令的运行。状态区域1124显示关于所计划 路线的信息。概览按钮1126显示路线的概览。3D控件是关于导航应用程序正在显示3D还 是2D场景的指示器以及用于进入和离开3D模式的切换器。在这个阶段选择列表控件1132 就将使地图绘制应用程序以列表格式显示这组导航指令。这个阶段还显示了道路名称被显 示在标幅中而不是显示在道路上,因为地图绘制应用程序正工作于导航模式中。
[0171] 在短暂的时间量之后,结束控件1122、列表控件1132、状态区域1124、概览按钮 1126、和3D控件1128消失。在一些实施例中,控件突然消失,而在其他实施例中,控件逐渐 消隐。在一些实施例中,屏幕顶部的状态栏1127也消失,并且导航框1120移动到屏幕顶部。
[0172] 在阶段1103中示出了控件的不存在以及导航框1120的移动,其中看到导航地图 1121而除了上升的导航框1120之外没有控件。在一些实施例中,用户可以通过轻击屏幕来 恢复隐藏的控件。这在阶段1104和1105中示出。在阶段1104中,用户用手指1140轻击 屏幕。在阶段1105中,由于前一阶段中的轻击,控件回来了,并且导航框1120已经下降回 到其原始位置。所恢复的控件包括结束控件1122、状态区域1124、概览按钮1126、状态栏 1127、和3D控件1128。一旦控件返回了,用户就可以通过轻击再次使这些控件消失,如阶 段1105中所示,在阶段1105中用户用手指1150轻击屏幕以在阶段1106中将导航应用程 序恢复到全屏模式。除了隐藏的控件之外,在一些实施例中在全屏中,与地图的触摸交互大 大地受到限制。在一些实施例中,有更多控件在一些模式中显示、但在全屏模式中隐藏(例 如列表控件)。
[0173] 在一些实施例中,当控件被显示并且存在对状态栏的添加(例如显示持续呼叫长 度的电话呼叫状态栏)时,导航框被缩短,以便提供更多控件用于扩展的状态栏。这在图 12中显示,图12例示了在设备上电话呼叫期间控件隐藏和显现的导航应用程序。图12包 括阶段1201和1202。在阶段1201中,导航应用程序的控件被隐藏,并且导航框1210和地 图1215可见。用户在触摸屏上用手指1217轻击,以命令导航应用程序显示其控件。在阶 段1202中,导航应用程序显示其控件1220,并且在状态栏1224下方显示电话呼叫状态栏 1222。由于电话呼叫状态栏1222,导航应用程序具有更少的空间。为了补偿可用于导航应 用程序的更小屏幕量,一些实施例的导航应用程序在电话呼叫状态栏1222在屏幕上时缩 小导航框1210。在一些实施例中,当导航框缩小时,框中的文本和/或方向箭头被改变以适 应可用于该文本和箭头的减少的面积量。
[0174] 2.结束导航
[0175] 在导航应用程序运行一组导航指令的普通过程中,在设备到达需要导航指令的每 个新交叉点时,用于下一个这样的交叉点的指令出现。这继续直到设备到达其目的地。当 到达目的地时,导航应用程序停止提供指令,并且所编程路线的运行结束。图13在四个阶 段1301-1304中例示了所编程路线的结束。在阶段1301中,该应用程序正以具有隐藏的控 件的方式运行,导航框1310正显示目的地仅仅在1000英尺之外。目的地在地图上被显示 为具有圆头的图钉1312。但是,本领域的普通技术人员将认识到,在其他实施例的应用程序 中可以使用其它符号,并且在一些实施例中不使用符号并且线条仅仅结束。随着设备移动 更靠近其目的地,导航应用程序对距离进行倒数。在阶段1302中,导航框1320显示仅仅还 有100英尺就到达目的地。在阶段1303中,设备刚刚已经到达其目的地。导航框1330指 不目的地在左侧,并且包括指向标革G中央的ft]头的符号。最后,在阶段1304中,随着设备已 经到达其目的地,导航应用程序已经关闭导航框1320,从而为用户留下地图1340,但是没 有进一步的方向。
[0176] 在一些实施例中,目的地可以在汽车不能到达的地方,例如终点图钉可以在公园 中央。在一些这样的实施例中,驾车方向将结束,但是将有用于步行的继续方向。在其他这 样的实施例中,该应用程序当在地图模式或在锁定模式中显示地图时,不会提供用于步行 的文本指引,但是仍然将会将图钉保持在该位置(例如公园中央)。在一些这样的实施例 中,行程的汽车部分结束之后的最后指令将是指令"请步行前往"。
[0177] 图13例示了在导航应用程序将用户一直引导到其最终目的地时所发生的情形。 但是,在一些实施例中,用户可能改变关于获得方向的用户想法。用户可能希望沿路停止、 改变目的地,或者由于一些其他原因可能希望结束这组导航指令的运行。因此,一些实施例 的该应用程序包括"结束"按钮。结束按钮停止运行一组导航指令,并且在一些实施例中将 用户留在相同情形中如同其已经到达目的地(例如没有指令但是具有地图)。图14例示了 导航程序结束控件。这个图在两个阶段1401和1402中显示。阶段1401显示了其控件可 见的导航应用程序。这些控件包括"结束"按钮1410。用户正在用手指1412轻击该按钮。 导航应用程序远离其目的地,如导航框1414和路线1416所指示,导航框1414陈述了下一 交叉点在20英里外,路线1416延伸到位置指示器1418前方的距离中。在阶段1402中,因 为用户已经轻击结束按钮1410,所以导航框1414与路线1416 -样消失。位置指示器1418 在这个阶段中也消失,由球形位置指示器1428代替。
[0178] 3.用于在导航期间杳看路线侧面的手势
[0179] 如上所述,虚拟相机的默认行为是沿循设备位置通过虚拟世界并且在设备正在移 动的方向上向下指向,或者至少到其路线的设备当前位置前方很近的一部分。但是,并非总 是希望使相机径直向前指向。相反,有时用户希望相机成一角度指向。因此,一些实施例的 导航应用程序在用户将地图向侧面拖动时旋转虚拟相机。
[0180] 图15例示了在用户将地图推向侧面时的地图旋转。这个图包括四个阶段 1501-1504。在阶段1501中,该应用程序在其默认模式中被显示,其中街道1510(主街)和 当前线路1512在3D地图1514上平行于屏幕侧面延伸。在这个阶段1501中,用户开始将 地图向左边推。在下一阶段1502中,虚拟相机已经移动到左边并且向右边旋转。即,3D地 图1514已经改变为如同虚拟相机已经移动到左边并且向右边旋转。地图1514已经被旋 转,现在显示街道右侧的建筑物的墙面。在一些实施例中,对于地图将旋转多远具有最大阈 值。在一些实施例中,除了能够将地图左右移动之外,用户还可以移动到位置指示器略前方 或略后方的视图(例如通过用一根手指向下或向上拖动)。在一些这样的实施例中,通过拖 动可以向前或向后移动地图的量也被施加以上限。
[0181] 在所示实施例中,该应用程序只在用户正向左(或向右)拖动地图的同时、或者在 其后的短时间内(例如以模拟的惯性)旋转建筑物。一旦用户停止拖动地图1514或将其 手指保持在原地以将地图1514保持在原地,地图1514就返回到在相机正采取的路线指引 上的其默认视图。这在阶段1503中显示,在阶段1503中,用户已经停止拖动地图1514,并 且虚拟相机随着其在其路线上移动而正在旋转和/或移动回到其原来正位于设备后面的 位置。通过阶段1504,地图1514已经恢复其先前取向。在一些实施例中,虚拟相机在地图 被拖向侧面时只旋转,而非移动且旋转。而在其他实施例中,相机绕位置标识符旋转,使得 位置标识符在地图绕其旋转时看起来是固定点。
[0182] 4.路线概览樽式
[0183] 在一些情况下,不是只查看显示下一交叉点的小比例地图,一些用户有时可能希 望查看大图片。即,用户可能希望在用户正行进于其导航应用程序的所计划路线上期间查 看该路线全部。因此,一些实施例提供为用户显示整条路线的概览选项。图16和17例示 了概览控件。图16包括两个阶段1601和1602。在阶段1601中显示了导航地图1610、概 览按钮1612、手指1614、和列表控件1617。在导航地图1610中,位置指示器1616显示设备 位于主街上靠近第一大街。阶段1601还显示了地图绘制应用程序正在标幅1618中显示道 路名称,因为地图绘制应用程序正工作于导航模式中。在这个阶段中,手指1614击中概览 按钮1612,从而导致在阶段1602中显示概览。
[0184] 在阶段1602中,导航应用程序已经显示了概览地图1620、恢复按钮1622、位置指 示器图钉1626、终点图钉1628和位置指示器控件1630。概览地图1620为用户显示从当前 位置开始的其整个计划路线。在所例示的实施例中,概览地图关注于剩余路径,而非从起点 开始的整条路线,因为其没有显示指示先前行进过的路线的浅着色线条。但是,在一些实施 例中,概览地图显示整条路线,而不仅仅是从设备的当前位置开始的路线。在一些实施例 中,列表控件1617在概览地图中也被呈现,以允许用户直接从概览地图进入操控列表(例 如即将到来的转弯)。第二阶段1602还示出了道路名称被显示在道路上,因为地图绘制应 用程序正在显示概览地图(即不是在导航模式中)。需要指出的是,一些实施例的地图绘制 应用程序另选地或结合地使用标幅来显示道路名称,而不管地图绘制应用程序正工作于哪 个模式中。
[0185] 恢复按钮1622将导航应用程序切换回到阶段1601的导航视图。位置指示器图 钉1626和终点图钉1628分别显示设备的当前位置和导航路线的最终目的地。在一些实施 例中,该应用程序允许用户对地图进行移动、放大和缩小、以及以其他方式关注于概览地图 1620的不同部分。位置指示器控件1630在一些实施例中使地图定中心于位置指示器图钉 1626 上。
[0186] 在一些实施例中,概览模式具有搜索框,其允许用户输入针对在概览地图中可以 找到的项目的搜索查询。例如,用户可以在地图上搜索加油站,从而用户可以确定到哪里去 给其汽车加油。另一示例会是对咖啡馆的搜索,从而用户可以停下来买杯咖啡。一些实施 例允许用户在恢复导航之前从原来的最终目的地切换到搜索中找到的目的地。
[0187] 在一些实施例中,所有概览地图都是2D的。在其他实施例中,一些或所有概览地 图是3D的。例如,一些实施例使用2D概览地图用于涵盖长距离的路线,而使用3D概览地 图用于涵盖短距离的导航路线。图17例示了使用3D概览地图的一个实施例。图17包括 两个阶段1701和1702。在阶段1701中,导航地图1710、概览按钮1712、手指1714、和列表 按钮1617被显示。在导航地图1710中,位置指示器1716表明设备位于主街上靠近第一大 街。在这个阶段中,手指1714击中概览按钮1712,从而导致在阶段1702中显示概览。
[0188] 在阶段1702中,导航应用程序已经显示了概览地图1720、恢复按钮1722、位置指 示器图钉1726、终点图钉1728和位置指示器控件1730。概览地图1720为用户显示其整个 计划路线。恢复按钮1722将导航应用程序切换回到阶段1701的导航视图。位置指示器图 钉1726和终点图钉1728分别显示设备的当前位置和导航线路的最终目的地。位置指示器 控件1730将地图定中心于位置指示器图钉1726上。
[0189] 在一些实施例中,3D概览地图包括参考图16所述的搜索功能。此外,在一些实施 例中,概览地图包括用于将地图定中心于终点图钉上的控件。在一些实施例中,位置指示器 控件允许用户在定中心于设备的当前位置上和定中心于设备的目的地上之间进行切换。在 一些实施例中,概览模式可以在导航期间的任何时候被激活。
[0190] D.多樽式应用稈序
[0191] 1.涫染樽块
[0192] 图18概念性地例示了一些实施例的地图绘制应用程序为了渲染用于在客户端设 备(例如在客户端设备的显示器上)显示的地图而执行的处理或地图渲染流水线1800。在 一些实施例中,地图渲染流水线1800可以被统称为地图渲染模块。这个处理流水线的更详 细的版本在提交于2012年9月30日的名称为"Virtual Camera for 3D Maps"的美国专 利申请13/632, 040中进行了描述。美国专利申请13/632, 040以引用方式并入本文。如图 所示,处理流水线1800包括图块检索器1805、一组网格构建器1815、一组网格构建处理器 1810、图块提供器1820、虚拟相机1830、和地图渲染引擎1825。
[0193] 图块检索器1805在一些实施例中根据来自网格构建器1815的对地图图块的请求 执行用于检索地图图块的多个过程。如下文中所述,网格构建器1815标识构建其相应网格 所需的现有地图图块(其被存储在地图服务服务器上或者在执行处理流水线1800的设备 上的高速缓存中)。图块检索器1805接收对地图图块的请求,确定从那里检索地图图块的 最佳位置(例如从地图服务、从设备上的高速缓存),并在需要的情况下对地图图块进行解 压缩。
[0194] 一些实施例的网格构建器1815(也被称为图块源)由图块提供器1820实例化,以 便构建不同层的视图图块。根据地图绘制应用程序所显示的地图的类型,图块提供器1820 可以实例化不同数量和不同类型的网格构建器1815。例如,对于空拍图(或卫星)视图地 图,图块提供器1820可只实例化一个网格构建器1815,因为一些实施例的空拍图地图图块 不包含多层数据。实际上,在一些实施例中,空拍图地图图块包含在地图服务处生成的已经 构建的网格,对于其,(由卫星、飞机、直升机等拍摄的)空拍图图像被用作为纹理。但是, 在一些实施例中,在该应用程序处于混合模式中时,附加的网格构建器可以被实例化用于 生成叠置在空拍图图像上的标签。对于2D或3D渲染的矢量地图(即非卫星图像地图),一 些实施例实例化单独的网格构建器1815来构建用于土地覆盖多边形数据(例如公园、水域 等)、道路、名胜标记、指向标签(例如用于公园的标签等)、道路标签、交通(如果显示交通 的话)、建筑物、栅格数据(用于某些缩放水平的某些对象)、以及要结合到地图中的其他数 据层的网格。
[0195] 一些实施例的网格构建器1815从图块提供器1820接收"空"视图图块,并且将"构 建后的"视图图块返回给图块提供器1820。即,图块提供器1820向这些网格构建器1815 中每一者发送一个或多个视图图块(未示出)。这些视图图块中每一者指示为其绘制网格 的世界区域。在接收到这样的视图图块后,网格构建器1815标识地图服务所需要的地图图 块,并且将其列表发送给图块检索器1805。
[0196] 在从图块检索器1805接收回这些图块后,网格构建器使用存储在这些图块中的 矢量数据来构建用于视图图块所描述区域的多边形网格。在一些实施例中,网格构建器 1815使用几个不同网格构建处理器1810来构建网格。这些功能可以包括网格生成器、三角 仪、阴影生成器、和/或纹理解码器。在一些实施例中,这些功能(和附加网格构建功能) 可供每个网格构建器使用,其中不同网格构建器1815使用不同功能。在构建其网格之后, 每个网格构建器1815将其视图图块返回到图块提供器1820,其中填充有其网格层。
[0197] 图块提供器1820从控制器1875接收表示要被显示的地图视图的特定视图(即体 积或视锥)(即从虚拟相机1830可见的体积)。图块提供器执行任何挑拣(例如标识在视 图图块中要显示的表面区域),然后将这些视图图块发送到网格构建器1815。
[0198] 图块提供器1820然后从网格构建器接收构建后的视图图块,并且在一些实施例 中利用来自虚拟相机1830的特定视图对所构建的网格进行挑拣(例如移除太远的表面区 域、移除将完全位于其他对象后面的对象等等)。在一些实施例中,图块提供器1820在不同 时间从不同网格构建器接收构建后的视图图块(例如由于用于完成更复杂或更不复杂的 网格的不同处理时间、在从图块检索器1805接收到所必需的地图图块之前经过的不同时 间等等)。一旦视图图块的所有层都已经被返回,一些实施例的图块提供器1820就将这些 层放在一起,并且将数据释放给控制器1875以用于渲染。
[0199] 虚拟相机1830生成用于供流水线1800进行渲染的体积或表面,并且将该信息发 送给控制器1875。基于地图将从那里被渲染的特定位置和取向(即3D空间中用户从那里 "查看"地图的点),虚拟相机标识用于实际发送给图块提供器1820的视场。在一些实施例 中,在地图绘制应用程序正在渲染用于导航的3D透视视图时,根据一算法确定虚拟相机的 视场,该算法基于用户设备的运动以规则的时间间隔生成新的虚拟相机位置和取向。
[0200] 在一些实施例中,控制器1875负责管理图块提供器1820、虚拟相机1830、和地图 渲染引擎1825。在一些实施例中,实际上可以实例化多个图块提供器,并且控制器将几个视 图图块(例如地图图块和建筑物图块)放在一起以创建传递给地图渲染引擎1825的场景。
[0201] 地图渲染引擎1825负责基于从虚拟相机发送的网格图块(未示出)生成用以输 出到显示设备的绘图。一些实施例的地图渲染引擎1825具有几个子过程。在一些实施例 中,每种不同类型的地图元素由不同子过程渲染,其中渲染引擎1825处理不同层对象的遮 挡(例如将标签放置在不同建筑物上方或后面、在土地覆盖上方生成道路等等)。此类渲染 过程的示例包括道路渲染过程、建筑物渲染过程、标签渲染过程、植被渲染过程、栅格交通 渲染过程、栅格道路渲染过程、卫星渲染过程、多边形渲染过程、背景栅格渲染过程等等。
[0202] 现在将介绍一些实施例中的渲染流水线1800的操作。基于用于在特定缩放水平 查看特定地图区域的用户输入,虚拟相机1830指定从那里查看地图区域的位置和取向,并 且将这个视锥或体积发送到控制器1875。控制器1875实例化一个或多个图块提供器。虽 然在这个图中示出了一个图块提供器1820,但是一些实施例允许一次实例化多个图块提供 器。例如,一些实施例实例化用于建筑物图块和用于地图图块的分开的图块提供器。
[0203] 图块提供器1820执行为了生成标识对于其需要构建网格的地图区域的空视图图 块所必需的任何挑拣,并且将这些空的视图图块发送给网格构建器1815,网格构建器被实 例化用于所绘制地图的不同层(例如道路、土地覆盖、P0I标签等等)。网格构建器1815使 用从地图服务接收的清单,其标识在地图服务服务器上可用的不同图块(例如作为四叉树 的节点)。网格构建器1815从图块检索器1805请求特定地图图块,图块检索器1805将所 请求的地图图块返回给网格构建器1815。
[0204] -旦特定网格构建器1815已经接收到其地图图块,其就开始使用地图图块中所 存储的矢量数据来构建用于从图块提供器1820所发送的视图图块的网格。在为其地图层 构建网格之后,网格构建器1815将构建后的视图图块发送回图块提供器1820。图块提供 器1820等待直到其已经从这各个网格构建器1815接收到所有视图图块,然后将它们层叠 在一起并且将完成的视图图块发送给控制器1875。控制器将从所有其图块提供器返回的图 块(例如地图视图图块和建筑物视图图块)缝合在一起,并且将这个场景发送到渲染引擎 1825。地图渲染引擎1825使用地图图块中的信息来绘制用于显示的场景。
[0205] 2.不同樽式的状杰图
[0206] 图19概念性地例示了状态图1900,其描述一些实施例的集成地图、搜索、和导航 应用程序(例如前面章节中所述的应用程序)的不同状态及这些状态之间的转换。本领域 的普通技术人员将认识到,一些实施例的该应用程序将具有与所有不同类型的输入事件相 关的多个不同状态,并且状态图1900具体针对这些事件的一个子集。状态图1900描述和 涉及用于改变该应用程序状态的多个手势交互(例如多点触摸手势)。本领域的普通技术 人员将认识到,也可以使用多个其他交互(诸如光标控制器手势和按钮点击、键盘输入、触 控板/轨迹板输入等等)用于类似的选择操作。
[0207] 在用户最初打开地图绘制应用程序时,该应用程序处于状态1905中,即地图浏览 状态。在这个状态1905,该应用程序将已经生成并显示了地图视图。为了生成并显示这个 地图视图,一些实施例的该应用程序标识对于区域的所需要的一组地图图块,请求这些地 图图块(例如向地图服务服务器请求),从虚拟相机的特定位置、取向、和透视生成这些地 图图块的视图,并且将地图视图渲染给设备显示。在处于状态1905中时,地图视图是静态 的。利用处于状态1905中的该应用程序,用户可以执行多个操作来修改地图视图,搜索实 体(例如名胜、地址等等),检索用于导航的路线等等。
[0208] 在一些实施例中,该集成应用程序被显示在集成有触敏显示器的设备上。地图上 的各种手势交互可以使该应用程序对地图视图执行不同修改(例如平移、旋转、缩放、修改 地图透视等等)。在该集成应用程序接收到地图显示上的手势交互(而不是叠置在地图显 示上的各种悬浮或非悬浮控件上的触摸输入)时,该应用程序转到状态1910以执行手势输 入识别。
[0209] 手势输入识别状态1910区分不同类型的手势输入,并且将这些类型的输入转化 为不同地图视图修改操作。在一些实施例中,地图绘制应用程序接收由集成有触敏显示器 的设备的操作系统转化的手势输入。操作系统将触摸输入转化为手势类型和位置(例如坐 标(x,y)处的"轻击"、具有在两个不同位置处的分开的触摸输入的"捏合"操作等等)。在 状态1910, 一些实施例的集成地图绘制应用程序将这些转化为不同地图视图修改操作。
[0210] 在该应用程序接收到第一类型的手势输入(例如地图视图上两个独立的触摸输 入一起按旋转运动移动)时,该应用程序转到状态1915以旋转地图。为了旋转地图视图,一 些实施例修改决定地图的哪个部分被渲染以创建地图视图的虚拟相机的位置和/或取向。 例如当在3D模式中时,地图绘制应用程序将虚拟相机绕特定位置(例如触摸输入的中心、 显示中心、标识用户位置的位置指示器等等)旋转。在第一类型的手势输入继续时,地图绘 制应用程序保持在状态1915中以继续旋转地图。
[0211] 在用户释放第一类型的手势输入时,一些实施例的该应用程序转到状态1930以 执行惯性计算。在一些实施例中,在用户释放某些类型的触摸输入之后,该应用程序继续 执行相关联的地图视图修改特定时间量和/或距离。在这种情况下,在用户释放了旋转输 入之后,该应用程序转到惯性计算状态1930以计算该旋转应该被执行的附加旋转量和时 间。在一些实施例中,该应用程序将旋转从地图先前被旋转的(角)速度减速,就好像"摩 擦"力被施加到地图。同样,一些实施例的惯性计算基于第一类型手势输入的速度。从状 态1930,该应用程序转回到该应用程序先前所位于的地图修改状态。即,当该应用程序从状 态1915 (旋转状态)转到惯性计算状态1930时,其于是在执行了惯性计算之后转回到状态 1915。在地图的旋转完成之后,该应用程序转回到状态1905。
[0212] 在该应用程序接收到第二类型的手势输入(例如单个触摸输入在地图视图上移 动)时,该应用程序转到状态1920以平移地图。为了平移地图视图,一些实施例修改决定 地图的哪个部分被渲染以创建地图视图的虚拟相机的位置。这使地图看起来在源自第二类 型手势输入的方向的方向上滑动。在一些实施例中,在地图视图处于3D透视模式中时,平 移过程涉及执行触摸输入的位置与平面地图上一位置的相关,以便避免地图视图中突然的 不希望的跳转。在第二类型的手势输入继续时,地图绘制应用程序保持在状态1920中以继 续平移地图。
[0213] 在用户释放第二类型的手势输入时,一些实施例的该应用程序转到状态1930以 执行惯性计算。在一些实施例中,在用户释放了某些类型的触摸输入之后,该应用程序继续 执行相关联的地图视图修改特定时间量和/或距离。在这种情况下,在用户释放了平移输 入之后,该应用程序转到惯性计算状态1930以计算移动地图视图(即移动虚拟相机)的附 加量以及该运动应该被执行的时间。在一些实施例中,该应用程序将平移运动从地图先前 正被平移的速度减速,就如同"摩擦"力施加于地图。同样,一些实施例的惯性计算基于第 二类型的手势输入的速度。从状态1930,该应用程序转回到该应用程序先前所处于的地图 修改状态。即,在该应用程序从状态1920(平移状态)转到惯性计算状态1930时,其然后 在执行了惯性计算之后转回到状态1920。在地图的平移完成之后,该应用程序转回到状态 1905。
[0214] 在该应用程序接收到第三类型的手势输入(例如两个分开的触摸输入移动更靠 近到一起或者相互远离)时,该应用程序转到状态1925以放大或缩小地图。为了改变地图 视图的缩放水平,一些实施例修改决定地图的哪个部分被渲染以创建地图视图的虚拟相机 的位置(即高度)。这使地图视图包括地图的更多面积(如果缩小的话)或更少面积(如 果放大的话)。在一些实施例中,随着用户放大或缩小,该应用程序检索不同地图图块(用 于不同缩放水平)以生成和渲染新地图视图。在第三类型的手势输入继续时,地图绘制应 用程序保持在状态1925中以继续放大或缩小地图。
[0215] 在用户释放第二类型的手势输入时,一些实施例的该应用程序转到状态1930以 执行惯性计算。在一些实施例中,在用户释放某些类型的触摸输入之后,该应用程序继续执 行相关联的地图视图修改特定时间量和/或距离(即将虚拟相机移动得更高或更低)。在 这种情况下,在用户释放了缩放输入之后,该应用程序转到惯性计算状态1930以计算缩放 地图视图(即移动虚拟相机)的附加量以及该运动应该被执行的时间。在一些实施例中, 该应用程序将缩放运动从地图先前被放大或缩小的速度(即虚拟相机改变高度的速度)减 速,就如同"摩擦"力施加于相机。同样,一些实施例的惯性计算基于第三类型的手势输入 的速度。从状态1930,该应用程序转回到该应用程序先前处于的地图修改状态。即,在该应 用程序从状态1925 (缩放状态)转到惯性计算状态1930时,其然后在执行了惯性计算之后 转回到状态1925。在地图的缩放完成之后,该应用程序转回到状态1905。
[0216] 为了简化,状态图1900例示了地图平移、缩放、和旋转过程使用同一惯性计算过 程(状态1930)。但是,在一些实施例中,这些不同地图修改过程中每一者实际上使用不同 惯性计算来标识其特定运动类型的减速和停止。此外,一些实施例是在接收到输入时,而不 是在用户移除手势输入时计算和修改惯性变量。
[0217] 在该应用程序接收到第四类型的手势输入(例如两个分开的触摸输入一致地向 上或向下移动触敏显示)时,该应用程序转到状态1935以修改地图的透视图。为了改变地 图的透视视图,一些实施例在地图上沿弧线移动虚拟相机,从而修改虚拟相机的位置和取 向二者(因为相机将其视场中心保持在地图上的特定位置处)。在一些实施例中,不同缩放 水平使用不同弧线来让虚拟相机沿其移动。这些弧线中每一者具有顶部点,虚拟相机在该 顶部点处径直向下指向,从而提供地图的2D透视视图。此外,每个弧线具有底部点,其是虚 拟相机可以移动到的该弧线的最低点。因此,在一些实施例中,第四类型的手势输入可以使 该应用程序在2D地图视图和3D透视地图视图之间改变。在第四类型的手势输入继续时, 地图绘制应用程序保持在状态1935中以继续修改地图的透视视图。
[0218] 在用户释放第四类型的手势输入时,一些实施例的该应用程序转到状态1940以 执行惯性计算。在一些实施例中,在用户释放了某些类型的触摸输入之后,该应用程序继续 执行相关联的地图视图修改特定时间量和/或距离(即将虚拟相机移动得更高或更低)。 在这种情况下,在用户释放了透视视图改变输入之后,该应用程序转到惯性计算状态1940 以计算修改地图视图的透视(即沿其弧线移动虚拟相机)的附加量以及该运动应该被执行 的时间。在一些实施例中,该应用程序将该运动从地图先前改变透视的速度(即虚拟相机 沿其弧线移动的速度)减速,就如同"摩擦"力施加于相机。同样,一些实施例的惯性计算 基于第四类型的手势输入被执行的速度。
[0219] 此外,对于透视改变操作,一些实施例转到回弹计算状态1945。如所述,透视改变 操作在一些实施例中具有允许的最大和最小透视偏移,其可以取决于当前地图视图的缩放 水平。因此,除了惯性计算之外,该应用程序还在状态1945执行回弹计算。回弹计算使用惯 性计算来确定是否将到达沿虚拟相机弧线的最大点,并且如果是,则确定虚拟相机在该点 处的速度。一些实施例允许虚拟相机移动略微超过该最大点碰到"回弹"点,该应用程序在 该回弹点使虚拟相机在其弧线上掉头,从而将其朝向该最大点向回移动。一些实施例只在 虚拟相机弧线的一端(例如弧线的底部)具有这样的反弹回功能,而其他实施例在弧线两 端都具有该功能。从回弹计算状态1945,该应用程序转回到惯性计算状态1940,然后转回 到透视改变状态1935以显示地图视图移动。此外,在用户执行第四类型的触摸输入足够久 并且透视到达其最大点时,该应用程序直接从状态1935转到状态1945以计算回弹信息,然 后转回到状态1935。在对地图的透视视图的修改完成之后,该应用程序转回到状态1905。
[0220] 以上状态涉及地图呈现上的多个多点触摸手势,集成地图、搜索、和导航应用程序 将其转化为对地图呈现的不同修改。多种其它触摸输入也可以使该应用程序改变状态和执 行各种功能。例如,一些实施例将3D可选项目叠置在地图视图上(例如作为悬浮控件), 并且(例如通过轻击输入)选择该3D项目就使该应用程序转到1935以修改地图视图的透 视。在地图视图开始于3D透视视图时,该应用程序将透视修改为2D视图;当地图视图开始 于2D视图时,该应用程序将透视修改为3D视图。在修改后,该应用程序返回到状态1905。
[0221] 在用户正在状态1905中查看地图时,该应用程序呈现多个标签作为地图视图的 部分。这些标签中的一些指示名胜、或其它位置。在用户选择某些标签(例如用于某些商 铺、公园等)时,该应用程序转到状态1950以显示用于所选位置的标幅(例如信息显示标 幅),然后返回到地图浏览状态(具有标幅显示在地图上)。在一些实施例中,该标幅包括 (1)使该应用程序在不离开地图视图的情况下检索从设备的当前位置到所选位置的路线 (例如驾车路线)的快速路线导航UI控件(例如按钮)以及(2)使该应用程序提供关于该 位置的附加信息的信息n控件(例如按钮)。
[0222] 在用户选择n控件按钮时,该应用程序从状态1905转到状态1955以显示用于所 选位置的演示区域。在一些实施例中,这个演示区域显示所选位置的媒体呈现(例如3D视 频呈现,所选位置的空拍图视图,为该位置捕获的一系列图像等等)、以及用于所选位置的 多种信息(联系信息、评论等等)。在用户执行各种操作来对演示区域导航以及查看演示区 域内的信息时,该应用程序保持在状态1955中。在用户选择用于转回到地图视图的UI控 件时,该应用程序转到状态1905。
[0223] 从地图浏览视图,用户也可以容易地访问该应用程序的搜索功能。在特定n控件 (例如搜索栏)被选择时,该应用程序转到搜索输入建议状态I960。在搜索输入状态,一些 实施例显示触摸屏键盘,用户可以用其来输入搜索词。搜索词可以是商铺名称、地址、位置 类型(例如咖啡馆)等。在用户输入字符期间,该应用程序保持在状态I960中,并且基于 最近搜索、已经输入的字母等提供建议。一些实施例可以使用基于前缀的建议(例如以已 经输入的字符为开头的建议)以及其他建议(例如进行拼写纠正以在已经输入的串的开头 添加字符、对字符移位等等)。在一些实施例中,除了位置之外,选择也可以包括最近输入的 路线。如果用户在这个阶段选择取消UI控件,则该应用程序转回到状态1905而不执行搜 索。
[0224] 在用户选择搜索词(所建议的词或者用户完整输入的词)时,该应用程序转到状 态1965以在地图视图上显示搜索结果,然后转到状态1905,其中搜索结果被显示。一些实 施例将搜索结果显示为地图上的可选项目(例如图钉);对这些项目中的一者的选择就导 致转到状态1950以显示用于所选项目的标幅。此外,作为状态1965的一部分,一些实施例 的该应用程序自动地选择搜索结果中的一者(例如"最佳"结果)并且显示该标幅。
[0225] 在该应用程序是紧密集成的地图、搜索、路线规划、和导航应用程序时,用户可以 从地图浏览状态容易地访问路线规划功能。在特定n控件(例如路线输入按钮)被选择 时,该应用程序转到路线输入状态1970。在路线输入状态,一些实施例显示触摸屏键盘,用 户可以利用其输入位置(例如地址、场所名称、场所类型等)到"终点"和"起点"字段二者 中以便请求路线。在用户输入字符期间,该应用程序保持在状态1970中,并且基于最近路 线、最近搜索、与为搜索输入所述类似的自动补全等来提供建议。如果用户在这个阶段选择 取消n控件,则该应用程序转回到状态1905而不检索路线。
[0226] 在用户选择路线(例如通过输入"终点"位置和"起点"位置)时,该应用程序转到 路线显示状态1975。在这个阶段,该应用程序在地图视图上显示从第一所选位置到第二所 选位置的一条或多条路线(例如通过将路线线条叠置在地图视图上)。一些实施例自动地 选择这些路线中的第一个。用户可以选择任何其它路线(例如通过在未选中路线上轻击), 其中该应用程序保持在状态1975中(但是修改路线线条的显示以指示对这另一路线的选 择)。此外,当在状态1975中时,一些实施例的该应用程序显示关于路线规划和导航的不同 UI控件,包括方向列表控件、导航开始控件等。
[0227] 此外,在路线显示于其上的地图上的各种手势交互使该应用程序对地图视图执行 不同修改(例如平移、旋转、缩放、修改地图透视等)。在集成应用程序在处于路线显示状态 1975中期间接收到地图显示上的手势交互时,该应用程序转到状态1910以执行手势输入 识别,其中所有这些手势地图修改操作(例如对状态1915-1945的推论)都可用。即,该应 用程序将手势输入转化为与上文中为状态1915-1945所述的那些类似的平移、旋转、缩放、 和/或透视改变操作,具有用于虚拟相机运动的类似惯性和回弹特征。操作1915-1945返回 到地图浏览状态1905,而从路线显示状态1975访问的推论操作返回到路线显示状态1975。
[0228] 在一些实施例中,路线显示状态1975也能从其他状态访问。例如,如果用户在处 于状态1905中期间选择标幅上的快速路线UI控件,则该应用程序检索从设备的当前位置 到标幅所关联的位置的一条或多条路线。此外,一些实施例在状态1960在搜索建议中显 示先前请求过的路线。在用户选择这些所建议的路线中的一者时,该应用程序直接从状态 1960转到状态1975以在地图上显示一条或多条路线。
[0229] 根据用户所选择的不同控件,该应用程序可以从路线显示状态1975转入多个不 同模式。在用户选择清除路线的UI控件时,该应用程序转回到状态1905以显示没有任何 路线的地图。此外,集成地图可以从路线显示状态1975进入一个或多个导航模态。
[0230] 当在状态1975显示的所选择路线开始于设备的当前位置并且用户选择导航启动 控件时,该应用程序转到导航状态1980。在一些实施例中,该应用程序显示从地图视图到用 于导航的更加沉浸式3D视图的影片过渡。在一些实施例的导航状态1980内,虚拟相机沿 所选路线跟随用户的位置,以便呈现路线的即将出现的部分。在路线完成(设备到达目的 地位置)或用户选择用于结束导航的控件时,该应用程序转到状态1905以呈现地图浏览视 图 1905。
[0231] 在一些实施例中,在路线显示于其上的地图上的各种手势交互可以使该应用程序 在处于导航模式1980中期间对地图视图执行不同修改(例如平移、旋转、缩放、修改地图透 视等)。在一些实施例中,在导航模式中只有所述地图修改操作中的一些可用。例如,一些 实施例允许用户放大或缩小,但是不允许对地图的任何其他修改。因此,在用户提供手势输 入时,手势输入识别状态1910滤除不与缩放操作相关联的手势输入类型(并且随后,该应 用程序返回到状态1980)。在接收到与缩放操作相关联的手势输入类型时,手势输入识别状 态识别该输入,并且该应用程序转到类似于状态1925的状态,以改变地图的缩放水平(在 一些实施例中具有惯性计算)。
[0232] 其他实施例可以支持不同地图修改操作。例如,在一些实施例中,在处于导航模式 中期间,所有这些手势地图修改操作(例如对状态1915-1945的推论)都是可用的。一些 实施例允许手势地图修改操作的一个子集,诸如缩放和受限平移操作。在接收到与平移相 关联的手势输入类型后,一些实施例的平移操作将虚拟相机向侧面移动(在处于导航模式 中期间),然后将虚拟相机返回到沿路线指向。操作1915-1945返回到地图浏览状态1905, 而从导航状态1980访问的推论操作返回到导航状态1980。
[0233] 当在状态1975显示的所选路线开始于并非设备当前位置的位置(或者路线是步 行路线)并且用户选择导航启动控件时,该应用程序在状态1985转到步进模式、或路线检 测模式。在一些实施例中,该应用程序一次一个地显示沿路线执行的操控(例如作为导航 标志)。通过对这些操控提供手势输入(例如轻扫手势),用户可以在处于路线检测模式中 期间查看不同操控。操控被叠置载地图上,并且路线的至少一部分被显示在地图中。
[0234] 当在路线显示模式中时,地图上的各种手势交互可使该应用程序对地图视图执行 不同修改(例如平移、旋转、缩放、修改地图透视等)。在集成应用程序在处于步进模式1985 中期间接收到在地图显示上的手势交互时,该应用程序转到状态1910以执行手势输入识 另IJ,其中所有这些手势地图修改操作(例如对状态1915-1945的推论)都可用。即,该应用 程序将手势输入转化为与上文中为状态1915-1945所述的那些类似的平移、旋转、缩放、和 /或透视改变操作,具有用于虚拟相机运动的类似惯性和回弹特征。操作1915-1945返回到 地图浏览状态1905,而从步进模式1985访问的推论操作返回到步进模式1985。
[0235] 此外,在一些实施例中,手势输入识别识别所显示的操控上的至少一种类型的手 势输入,以便在操控之间切换。当在所显示的操控上(而不是在地图视图上)接收到特定 类型的手势输入(例如轻扫手势)时,该应用程序转到用于改变所显示操控的状态(未示 出),然后返回到状态1985。
[0236] 当集成应用程序在处于步进状态1985中期间接收到所显示的地图上的手势交互 时,该应用程序转到状态1910以执行手势输入识别,其中所有这些手势地图修改操作(例 如对状态1915-1945的推论)都可用。当修改操作完成时,该应用程序返回到状态1985。 当用户选择用于结束逐步查看操控的控件时,该应用程序转到状态1905以呈现地图浏览 视图。
[0237] 此外,在一些实施例中,该应用程序可以从步进模式1985转到自动步进状态 1990。当用户在该应用程序处于状态1985中期间选择位置追踪控件时,该应用程序转到自 动步进模式1990,其是另一导航模态。当在一些实施例的自动步进模式中时,集成地图、搜 索、和导航应用程序显示设备的位置最接近的操控(例如由执行该操控时所处于的交叉点 来量度)。当设备(例如沿路线)移动到更接近另一操控的位置时,自动步进模式自动显示 这另一操控。当用户取消选择位置追踪控件时,该应用程序转回到步进模式1985。当用户 在处于自动步进状态1990中期间选择用于结束导航的控件时,该应用程序转到状态1905 以呈现地图浏览视图。
[0238] 当在步进模式1985中时,在地图上的各种手势交互可使该应用程序对地图视图 执行不同修改(例如平移、旋转、缩放、修改地图透视等)。当集成应用程序在处于自动步 进模式1990中期间接收到在地图显示上的手势交互时,该应用程序转到状态1910以执行 手势输入识别,其中所有这些手势地图修改操作(例如对状态1915-1945的推论)都可 用。即,该应用程序将手势输入转化为与上文中为状态1915-1945所述的那些类似的平移、 旋转、缩放、和/或透视改变操作,具有用于虚拟相机运动的类似惯性和回弹特征。操作 1915-1945返回到地图浏览状态1905,而从自动步进模式1990访问的推论操作返回到自动 步进模式1990。此外,一些实施例在用户将地图平移特定距离时自动地将位置追踪控件关 闭,在这种情况下,该应用程序返回到步进模式状态1985,而不是自动步进状态1990。
[0239] II.导航标志的显示
[0240] 以上章节介绍了一些实施例的逐向导航特征。一个此类特征是地图绘制应用程序 所提供的导航标志描述供用户执行的操控。这些标志可以包括转弯、继续直行的距离、何时 走公路出口匝道、或供用户执行的其他操控。一些实施例为这些标志提供了多种动画,包括 在3D模式中将标志显示为在用户位置指示器上方通过、修改标志的外观以指示即将到来 的操控、和当将快速连续地执行两个操控时使用次标志。
[0241] A.不同h下f中的逼直外貌和不同格式
[0242] 在一些实施例中,导航标志在不同上下文中可具有不同外观。下面将进一步更详 细地介绍这些区别中的一些。具体地,要执行的操控的图形指示器(例如下文中将进一步 介绍的方向指示器)和描述那些操控的指令文本可以被适配以符合正显示导航标志的上 下文。例如,不同尺寸的标志可以具有简单和复杂的操控描述,并且指令文本可以被适配于 标志的尺寸并且可以基于在标志内显示的其他信息。
[0243] -些实施例将导航标志显示为使得为这些标志提供真实道路标志的外观。一些实 施例将导航标志显示为丰富的纹理图像(例如利用阴影、着色等),而不是简单地在地图显 示上显示平面图像。此外,一些实施例为导航标志使用与该应用程序正导航通过的地区中 道路标志的颜色匹配的着色。在一些实施例中,该应用程序还使用真实公路标牌来标记道 路。例如,对于编号的州和联邦公路,该应用程序将在导航标志(例如标志的侧边拦)内使 用与该道路相关联的公路标牌,用公路标牌代替导航指令中的道路名称、或以其他方式将 公路标牌包括在图形显示中。这些道路标志的生成和使用在提交于2012年9月30日提交 的名称为"Context-Aware Voice Guidance"的美国专利申请13/632, 121中进行了描述。 美国专利申请13/632, 121以引用方式并入本文。
[0244] 图20例示了其中使用此类公路标牌的几个GUI情景。第一个此类情景2005例示 了在逐向导航模式中的地图绘制应用程序,显示在US-101北向上直行20英里的指令。在 这个示例中,用于US-101的道路标志内联地显示在文本指令"在US-101North上直行"内, 作为对实际文本"US-101"的替代。一些实施例在道路具有标志并且该标志可作为图像用 于地图绘制应用程序时用道路标志代替道路的文本名称。
[0245] 第二示例2010例示了公路标牌显示在导航标志的右侧,而不是内联在文本指令 中。该情景例示了一些实施例为与示例2005中相同的指令使用的另一可选显示。在这个 情形中,公路标牌被显示为与导航标志左侧的图形指示器箭头相同的大小。此外,因为在道 路标志中呈现信息,所以该应用程序移除否则会被呈现的文本的"在lOlNorth上"部分。
[0246] 第三示例2015例示了其中导航标志被着色以匹配公路标牌中所示的道路类型的 情形。在这个情景中,指令告诉用户在CA-1 North上直行。"CA-1"由用于CA-1的公路标 牌标志代替。虽然一些实施例利用绿色(用于加利福利亚州公路的标志颜色)对这个标志 着色,但是其他实施例利用沿实际公路找到的道路标牌标志的颜色来对导航标志着色。其 他实施例使用绿色来匹配在设备所位于的地区中公路上找到的道路指令标志的颜色(例 如对于加利福利亚为绿色)。
[0247] 第四情景2020例示了在导航标志内的并上5号州际公路的操控。很大程度上类 似于第一示例2005,这例示了道路标牌标志作为内联文本。此外,在道路标牌内使用着色以 便匹配实际州际标志的外貌,其中顶部被着以红色而底部被着以蓝色。如所提及的,一些实 施例相反而是使用这些颜色的组合来对整个导航标志着色。
[0248] 虽然图20没有例示方向指示器2090的不同外观,但是一些实施例的地图绘制应 用程序使用不同外观以便适配方向指示器来适应导航标志被显示的上下文。
[0249] B.标志的动杰和动画旱现
[0250] 图20的上述情形例示了导航标志的静态显示(即不显示对标志进行的任何改 变)。一些实施例提供这些导航标志的动画或其他动态显示。这些显示包括随着用户进行 操控和标志被移除,显示标志在地图显示中的用户表示(导航圆块)头顶上经过的现象。此 夕卜,在操控靠近时可以为标志施加微妙动画,以便使用户注意到即将到来的操控。最后,当 两个操控在短时间连续地发生时,该应用程序将用于第二操控的导航标志显示为在第一标 志后面排队等候。
[0251] 1.导航标志的动画移除和旱现
[0252] 图21通过四个阶段2105-2120例示了一些实施例的用于移除一导航标志并引入 下一标志的动画。在一些实施例中,被移除标志的动画模仿道路标志在公路上在头顶经过 的动画。虽然这个图例示了在3D模式上下文内的动画,但是一些实施例还包括2D模式中 的动画。其他实施例具体地提供用于3D模式的动画。
[0253] 第一阶段2105例示了导航标志2125指示用户在100英尺后执行的并上主街的操 控。第二阶段2110例示了随着用户执行该操控而移除导航标志2125的动画。随着用户物 理地并上主街,导航标志2125放大并且开始从视场中消失,如同道路标志在公路上那样。 在一些实施例中,地图绘制应用程序还对标志应用透视倾斜,以进一步模仿标志在头顶经 过的现象。
[0254] 在第三阶段2115,后一导航标志2130开始从地平线或者地平线的更靠近附近显 现。一些实施例实际上在3D模式中从地平线一直不渲染地图,并从3D渲染结束处的距离 开始动画显示即将到来的导航标志。这个动画旨在模仿在公路上朝向道路标志接近,但是 经常以更快的速度(以便快速地使导航标志达到全尺寸,以及避免冗长动画分散注意力)。 第四阶段2120例示了所得到的显示,其中后一导航标志2130在正常位置中显示于屏幕顶 部。
[0255] 除了图21中所示的动画之外,一些实施例在一些情形下还包括更复杂的动画。作 为一个示例,一些实施例随着导航标志在用户进行转弯操控时退出显示而旋转导航标志, 以便模仿用户在标志下面转弯的现象。
[0256] 2.临时强调
[0257] 在一些情况下,地图绘制应用程序可以在导航标志所描述的操控将被执行之前早 早地显示该导航标志。例如,如果用户进入公路,并且下一操控涉及15英里后的公路出口, 则该应用程序可以在用户需要开始准备实际驶离公路之前早早地显示指示即将到来的公 路出口的导航标志。当到了提醒用户正在接近执行操控的交叉点的时候时,不同实施例使 用不同技术。一些实施例包括音频警示,其中用户设备提供语音导航来指出该交叉点正在 接近。
[0258] 要么与语音警示结合地要么只要语音警示被关闭,一些实施例通过标志显示来提 供视觉指示以表明操控即将到来。例如,在一些实施例中,该应用程序修改标志的颜色(例 如从绿色变为白色或者从绿色变为黄色)以及图形指示器箭头的颜色(例如从白色变为黑 色)。其他实施例在导航标志上显示较不刺眼的闪烁,旨在吸引用户注意而不过度刺眼。
[0259] 图22通过四个阶段2205-2220例示了这样的闪烁动画。这些阶段将显示的背景 例示为灰色,以便在闪烁在标志上移动时与闪烁形成对比(表示为白色)。第一阶段2205 例示了导航标志2225,当前指示1000英尺后的右转操控。
[0260] 在第二阶段2210,右转现在只在500英尺外。该应用程序已经判断这是合适的距 离来向用户警示即将到来的操控,并且因此已经开始在导航标志2225上显示闪烁。第三和 第四阶段2215和2220例示了这个动画的延续。在一些实施例中,该动画好像光在标志上 从左向右移动。其他实施例显示从右向左的类似动画、或者其他此类动画(例如光从标志 中央向外福射等等)。
[0261] 一些实施例基于多种因素修改动画开始时之处与操控相距的距离,所述因素诸如 是设备正在移动的速度(基于位置追踪信息)和用户当前所行进于的道路的限速。例如, 一些实施例具有动画应该显示时在交叉口之前的设定时间,并且使用这个速度信息来计算 适当的距离。一些实施例还基于进行的操控的类型来改变该距离(例如与右转驶离驶离单 车道道路相比,对于驶离公路允许更多时间)。
[0262] 3.次标志
[0263] 当路线要求快速连续的两个不同操控时,一些实施例将用于第二操控的导航标志 显示为堆叠在用于第一操控的导航标志下面。这就向用户警示第二操控的即将发生的本 质。当几个操控将连续被执行时,一些实施例将不止两个导航标志相互重叠地堆叠。
[0264] 图23通过四个阶段2305-2320例示了用于快速连续的操控的两个标志的显示。 在第一阶段2305,第一导航标志2325指示距离1000英尺处的即将到来的操控是左转上东 街。因为这是全尺寸逐向导航标志,所以该应用程序为这个操控显示第一类型的图形指示 器箭头(即复杂箭头)。如以比可能可用于驾驶者(其将主要是看着道路)的更加仔细的 查看在地图上可以看到的那样,在左转上东街后不久就将要求右转上南街,以便跟随所给 定的路线。为了使其对于用户而言更明显,该应用程序将第二导航标志2330显示在第一导 航标志2325下面。第二标志包括第二类型的图形指示器箭头(即更简单的箭头),因为较 少的空间被提供。此外,在第二标志2330中,较少的信息被提供给用户。
[0265] 第二阶段2310例示了用户现在已经行进了 900英尺,因此距离左转操控仅仅还有 100英尺。除了在导航标志2325中对距离的更新(以及3D地图的移动)之外,显示还没有 被改变。第三阶段2315例示了在已经执行了左转上东街的操控之后立即出现的显示。如 图所示,第二导航标志2330现在是全尺寸导航标志,具有复杂图形指示器箭头和附加文本 信息(50英尺的距离和右转的文本指令)。一些实施例动画显示从较小标志到全尺寸标志 的过渡,而其他实施例简单地用其中一个代替另一个。
[0266] 第四阶段2320例示了在用户已经进行了第二操控(右转上南街)之后的显示。该 应用程序现在显示用于下一操控(左转上西街)的导航标志2335。因为这个操控在2. 8英 里之外,所以该应用程序不将标志2335堆叠在标志2330下面。因为导航是在3D模式中, 所以一些实施例确实显示上文中参考图21所述的动画。
[0267] 在上一示例中,该应用程序堆叠用于相距50英里发生的操控的标志,但是不堆叠 用于相隔几个操控发生的操控的标志。针对何时将两个操控考虑为附随的阈值距离可取决 于多个因素。一些实施例存储不是变量的设定距离。其他实施例考虑操控中所涉及的道路 类型(例如基于后端地图数据中描述道路的功能道路分类变量)或限速,假设操控后用户 的可能速度,并基于该数据(即基于操控之间的阈值时间,诸如30秒)设置阈值距离。
[0268] III.自适应方向指示器的动态生成上一章节描述了为逐向导航提供的导航标志 的多个特征。如图所示,这些导航标志包括图形地描述用户要执行的操控的方向指示器,并 且在一些情况下还通过指示执行操控所处于的交叉口的其他分支来显示操控的上下文。这 些方向指示器可以在多种不同上下文中贯穿地图和导航应用程序地出现,在逐向导航的多 个方面以及在路线检测二者中。
[0269] 为了生成方向指示器,地图绘制应用程序接收关于每个交叉口(在下文中某些地 方也被称为交叉点)的数据,该数据指示交叉口的不同分支并且标注操控通过哪些分支进 入和离开交叉口。在一些实施例中,这个交叉口信息由地图服务存储,地图绘制应用程序访 问地图服务以便检索地图数据以及路线和导航信息。在本章节中,A小节首先介绍地图服 务服务器对这个交叉口数据的生成。B小节然后介绍运行于客户端设备上的地图绘制应用 程序对方向指示器的动态生成。
[0270] A.夺叉口数据的服备器侧牛成
[0271] 一些实施例的地图服务接收指定道路区段的每个交叉点的数据。在一些实施例 中,地图服务自动地为存储在地图数据中的这些交叉点中每一者生成附加数据,并且在一 些实施例中将交叉点数据转换为交叉口数据。这个交叉点信息将每个所接收的交叉点(或 在真实世界中被视为单个交叉口的一组相关交叉点)简化为以不同角度离开交叉点的一 组分支。当用户通过运行于设备上的地图绘制应用程序请求路线时,设备将该请求发送给 地图服务,地图服务生成从起始位置到终止位置的路线。地图服务在一些实施例中还利用 交叉口数据生成用于路线的逐向导航指令。地图服务标识进行操控时所处于的交叉口,并 且将交叉口数据修改为特定于在路线期间进行的操控。这个数据然后被发送到客户端地图 绘制应用程序运行于其上的用户设备。下面的小节首先介绍用于路线的导航数据的创建, 然后讨论地图服务对交叉口数据的预计算(从而数据可供在生成导航数据时使用),最后 介绍为所请求的路线对交叉口数据进行的特定类型的修改。
[0272] 1.导航数据创律
[0273] 图24概念性地例示了一些实施例的地图服务为了为提出请求的设备生成路线 并且将路线与导航指令一起提供给提出请求的设备而执行的操作。图24通过六个阶段 2410-2460例示了这个操作,其中地图服务接收对路线的请求,生成路线,生成用于路线的 交叉口数据,并且将路线提供给设备,设备利用该信息来显示导航指令。
[0274] 如图所示,图24的每个阶段例示了设备2405和地图服务2400。设备2405在一些 实施例中可以是手持设备(例如智能电话、平板设备等等),或者可以是专用导航设备(例 如内置到汽车内的导航系统、便携式导航设备等等)。此外,在一些实施例中,设备2405可 以是非便携式设备,诸如台式计算机或其他非便携式计算设备。
[0275] 地图服务2400是设备2405为了请求和接收地图数据、路线数据、逐向导航数据、 以及附加信息(例如关于位于地图上的场所的信息等等)而(例如经由有线连接、无线连 接,诸如蜂窝网络、Wi-Fi等等)连接到的服务。如图所示,地图服务2400存储地图数据 2415和交叉口数据2425,并且包括地图生成器2435和路线生成器2445以及其他模块(未 示出)。
[0276] 地图数据2415提供可以用以生成能查看的地图区域和路线的数据。这个地图数 据在一些实施例中包括纬度和经度数据、名称数据、以及关于道路和其他路径(例如行人 步道、渡轮线路、自行车道等等)、自然特征(例如河流、湖泊、山脉等)、名胜(例如建筑物、 商铺、公园等等)、和其他地图项目的描述性数据。例如在一些实施例中,路径被定义为一 系列纬度/经度顶点、名称、和描述性数据。这个描述性数据可以包括路途形式(即路径是 单幅路还是双幅路的一部分,路径是否是单向路径)、路径所属于的道路等级(例如机动车 道、地方道路、私家道路、自行车道等等)、以及其他信息)。在一些实施例中,这个地图数据 由外部来源(即地图提供方)编辑并且被提供给地图服务,而在其他实施例众,地图服务提 供其自己的地图数据。地图数据也可以是外部提供的数据和内部生成的数据的混合。此外, 地图数据可以包括用于多种地图构建体(诸如道路、土地覆盖等)的几何数据。
[0277] 交叉口数据2425提供用于地图数据中道路路径的交叉口的预先制表的数据。在 一些实施例中,如下文中所述,地图服务利用地图数据自动地计算用于道路路径交叉口的 交叉口数据。这个交叉口数据2425可以通过指代交叉口类型(例如点、环岛)和以不同角 度进入和离开交叉口的一系列分支来被存储。虽然地图数据2415和交叉口数据2425被显 示为分开的存储装置,但是它们二者可以存储在同一物理存储装置上或者分开的物理存储 装置上,交叉口数据2425实际上可以是地图数据2415的一部分。此外,地图和交叉口数据 中的一者或二者可分布在几个物理存储装置上(例如用于存储地图数据的一系列盘)。
[0278] -些实施例的地图生成器2435生成传输给请求者设备的地图信息(例如地图图 块)。请求者设备请求用于特定区域的地图(例如利用纬度/经度信息),并且地图生成器 2435创建(或使用预先生成的)用于该区域的地图图块,然后将用于这些图块的数据(例 如作为编码后的矢量和/或图像数据)传送给该设备。
[0279] 路线生成器2445响应于用户请求计算两个或更多个点之间的最佳路线。在一些 实施例中,路线生成器2445利用优化算法,基于地图数据计算路线。路线可以被定义为一 系列交叉口、一系列道路路径、或以其他方式定义。此外,在用户请求路线时,路线生成器 2445提供交叉口数据供设备在逐向导航中使用。在一些实施例中,交叉口分析器2455检索 交叉口数据2425,并且为路线的导航而修改该数据,如下文中所述。
[0280] 如图所示,在阶段2410,设备2405发送对路线的请求到地图服务2400。在一些实 施例中,用户输入起始地址(或场所)和结束地址(或场所),可能包括附加的中间点位置 (例如从A开始前往B,然后从B到C)。该设备然后将位置信息传输给地图服务。在一些实 施例中,该设备将位置转化为纬度和经度数据,而在其他实施例中,这个转换是由地图服务 执行的。
[0281] 在阶段2420,路线生成器2445访问地图数据2415以便生成用于这一系列位置的 一条或多条路线。在一些实施例中,路线生成器2445使用优化算法来寻找连接这一系列位 置的最佳(和次佳、第三最佳等等)路线。
[0282] 在阶段2430,交叉口分析器2455标识沿路线的对于其需要生成导航指引的操控, 并且检索用于这些操控的交叉口数据。一些实施例生成逐向导航指引以与路线一起提供给 设备。为了生成这些方向,地图服务2400标识路线的每次改变路径,在那个点,遵循方向的 用户将必须执行操控(例如右转、略微左转、掉头、并道等)。在一些实施例中,这些路径改 变中的每一者对应于存储在交叉口数据2425中的预先制表的交叉口。交叉口分析器2455 检索这个交叉口数据。在一些实施例中,每个交叉口被存储为以多个角度(例如基于相对 于北的偏离,北=0° )离开交叉口的一系列分支。在一些实施例中,除了交叉口数据之外, 路线生成器还创建路线规划方向,其一般描述要执行的操控。此类描述的示例包括"左转"、 "公路出口匝道"、"掉头"等等。在其他实施例中,这个描述由客户端地图绘制应用程序基于 所接收的交叉口数据而获得。
[0283] 然后,在阶段2440,交叉口分析器2455生成被设计用于路线的交叉口信息。在一 些实施例中,这涉及修改角度以将进入交叉点的行进方向设置为0° (即将路线在其上进 入交叉点的分支设置为180° )。这有效地将交叉口描述旋转了正北方与路线的行进进入 方向之间的差别。此外,交叉口分析器2455将这些分支中的一者标记为出口分支。一些实 施例还标记入口分支,而其他实施例依赖于设备来将180°分支标识为入口分支。
[0284] 阶段2450例示了地图服务2400然后将路线数据(即用于导航的交叉口数据和路 线数据)传输(例如经由设备用来传输路线请求的相同网络)到设备2405。如阶段2460 所示,设备2405然后使用地图服务所生成的交叉口和路线数据来为设备的用户显示导航 指令。在一些实施例中,导航指令包括交叉口与表示通过该交叉口的操控(在这个例子中 是右转)的样式化箭头的显示。
[0285] 虽然地图服务2400被显示为包括地图生成器模块和路线生成器模块,但是本领 域的普通技术人员将认识到,地图绘制应用程序可以包括附加模块、或者模块的不同分解。 地图服务可以由存储所有这些功能性和数据的单个计算设备(例如服务器)构成,或者功 能性可以分布在几个服务器之间(例如一个过程在第一服务器上而第二过程在第二服务 器上,并行地为不同用户执行相同操作的大量服务器,或执行本文所述功能性的计算设备 的其他配置)。
[0286] 图25概念性地例示了一些实施例的地图服务为了生成和传输路线和交叉口数据 给用户而执行的过程2500。如图所示,过程2500开始于(在2505)接收到对地图上两个位 置之间的路线的请求。在一些实施例中,当用户请求一系列不止两个位置时,每个区段被视 为独立的路线(即从点A到点B是第一路线,然后点B到点C是第二路线)。
[0287] 该过程然后(在2510)利用地图数据生成这些位置之间的至少一条路线。在一些 实施例中,该过程使用优化算法来标识这两个位置之间的最佳(或两个最好、三个最好、等 等)路线。这些路线可以被描述为沿路径的一系列顶点、路径之间的一系列交叉口、或者具 有其他描述。
[0288] 对于为起点和终点位置生成的路线,过程2500(在2515)选择所生成的路线中的 一者以便创建用于该路线的逐向指令。该过程然后(在2520)标识沿路线进行的操控。在 一些实施例中,地图服务标识每次路线改变路径,在那个点,遵循方向的用户将必须执行操 控(例如右转、略微左转、掉头、并道等等)。
[0289] 然后,该过程(在2525)检索这些操控中的每一者的交叉口。在一些实施例中,这 些路径改变中的每一者对应于地图服务所存储的预先制表的交叉口。下面详细地介绍这些 交叉口的生成。在一些实施例中,每个交叉口被存储为以各种角度(例如基于相对于北的 偏离,北=0° )离开交叉口的一系列分支。此外,交叉口数据在一些实施例中存储交叉口 类型(例如点、环岛、交通广场等)。
[0290] 该过程然后(在2530)为这些操控中的每一者修改交叉口信息。在一些实施例中, 这涉及修改角度以将行进进入交叉点的方向设置为〇° (即将路线在其上进入交叉点的分 支设置为180° )。这有效地将交叉口描述旋转了正北方与路线行进进入方向之差。此外, 一些实施例将这些分支中的一者标记为出口分支。一些实施例还标记入口分支,而其他实 施例依赖于设备来将180°分支标识为入口分支。
[0291] 过程2500然后(在2535)确定是否还有另外的路线需要为其生成操控/交叉口 信息。在还有另外的路线时,该过程返回到2515以选择下一路线。从起点位置到终点位置 的路线的不同变体可部分重叠,在这种情况下,一些实施例为重叠部分重复使用已经生成 的那组交叉口。
[0292] -旦为所有这些线路都生成了交叉口,该过程就(在2540)将路线和交叉口信息 传输给请求者(例如提出请求的设备)。如所提及的,提出请求的设备在一些实施例中使用 该信息以便生成逐向导航,包括样式化的交叉点/操控箭头。
[0293] 2.夺叉口数据的预计算
[0294] 如上所述,一些实施例由所存储的地图数据(例如路线区段和交叉点数据)来预 计算交叉口数据。地图服务然后存储这个交叉口数据以供在生成逐向导航指令时使用。以 下章节介绍用于生成这个交叉口数据的几个过程,其中地图服务接收供应方提供的交叉 点,标识所接收的交叉点中是否有任何集合应该被合并为单个交叉口,标识应该在交叉口 内联结在一起的道路区段对,并且生成交叉口的角度。在本章节内,术语"交叉点"将一般性 地用于指代供应方提供的关于两个路径区段在那里相交的信息,而术语"交叉口"将指代由 交叉点生成的表示真实世界中两个或更多道路在哪里相会的信息。因此,在一些实施例中, 多个交叉点可合并为一个交叉口,实际上仅仅是单个道路延续的两个道路区段之间的交叉 点可根本不被认为是交叉口。
[0295] 以下表示一些实施例的用于生成用于点交叉口的交叉口数据的伪代码:
[0296] 标识所有内部区段;
[0297] 标识所有内部转弯通道并将它们标记为内部区段;
[0298] 对于每个内部区段:
[0299] 聚集所有邻接的内部区段;
[0300] 将所聚集的内部区段标记为已处理;
[0301] 由内部区段的这个集合构建交叉口;
[0302] 除了其他数据(例如公园、水路、商铺等的位置)之外,地图数据还存储关于路径 (例如道路、行人步道、自行车道等)的信息。在一些实施例中,每个路径作为一系列区段 (例如道路区段)而被从地图提供方接收。对于某个区段,在一些实施例中,所存储的数据 包括该区段的起始和结束交叉点、定义起始和结束交叉点之间的路径所采取的线路的几何 数据、路径表征(或路途形式)、行进方向(其在一些实施例中可涉及单向标记)、路径的一 个或多个名称(例如" 1-405南向"、"圣地亚哥公路"等等)、指示路径重要性等级的分类、 和网络分类(路径所属于的联结的路径图)。在一些实施例中,几何信息包括路径行进通过 的一系列纬度/经度顶点。路途形式属性在一些实施例中包括以下表征:单幅路、双幅路、 机动车道、交流道、连接道、行人步道、阶梯。一些实施例可以包括附加表征。
[0303] 图26概念性地例示了一些实施例的用于确定应该被一起作为单个交叉口对待的 交叉点集合之间的路径区段的过程2600。如图所示,过程2600开始于(在2605)接收至 少两个路径区段(例如道路区段)之间的交叉点。在一些实施例中,地图服务接收一组道 路区段和一组交叉点(例如作为来自地图供应方的预计算数据)。每个道路区段跟随两个 此类交叉点之间的路径,并且每个交叉点标引进入和/或离开该交叉点的至少两个道路路 径。另一方面,在一些实施例中,交叉点不是从地图数据供应方接收的,地图服务遍历路径 数据以标识路径之间的交叉口并且分析这些交叉口以便预先制表交叉点。
[0304] 该过程然后(在2610)确定在所接收交叉点处的路径区段中是否有任何路径区 段是双幅路。如所提及的,双幅路是在一些形式的地图数据中使用的路径表征。被分隔开 (例如利用隔离带、双黄线等)的很多道路被接收(和绘制)为两个独立的路径区段,每个 方向一个路径区段。这些路径区段中每一者然后被标记以行进方向并且被标记为双幅路的 一半。因为用户通常将会把二者都被隔离带分隔开的两条道路的交叉口看作为单个交叉口 (而不是四个独立的交叉口),所以交叉点生成过程试图将这四个所接收的交叉点统一为 单个交叉口来呈现给用户用于导航目的。
[0305] 在这些路径区段中没有任何一个被标记为双幅路时,该过程(在2615)只利用在 所接收的交叉点中指定的路径区段来计算交叉口分支(即交叉口将只包括这一个所接收 的交叉点)。在一些实施例中,交叉点分支的计算涉及计算为交叉点指定的每个区段离开交 叉点位置的角度。随后,该过程结束。图27例示了此类交叉点2700的一个示例,还例示了 不要求路径区段以直角相会或者路径沿直线继续通过交叉点。
[0306] 在为所接收的交叉点指定的至少一个路径区段是双幅路时,该过程(在2620)确 定在交叉点处是否存在横跨交通转弯驶离双幅路。横跨交通转弯是在将横跨通过双幅路的 配对另一半(即道路的另一方向)(假设其存在的话)的方向上转弯驶离双幅路。在美国, 左转是横跨交通转弯。虽然在本文中所示的示例涉及右侧驾驶(即在道路右侧驾驶),但是 普通技术人员将认识到这些示例同样也适用于左侧驾驶地区(例如英国)。图28例示了一 个交叉口 2800,其包括两个双幅路径2805和2806以及单向道路2810。在交叉点2815,没 有横跨交通转弯驶离双幅路,因为仅有的选项是右转驶离双幅路径2805或左转驶离单向 街道2810。在没有此类转弯存在时,过程2600 (在2625)存储所接收的交叉点,同时认识到 其可能仍然是较大交叉口的一部分,以便确定是否将这个所接收的交叉点与其他所接收的 交叉点(例如单向道路2810和双幅路径2806之间的交叉点2820)包括在较大交叉口中。 例如,在交叉口 2800中,该过程将希望将所接收的交叉点2820与所接收的交叉点2815联 结为单个较大交叉口。随后,该过程结束。
[0307] 当在交叉点处(例如在交叉点2820处)存在横跨交通转弯驶离双幅路时,该过程 (在2630)沿横跨交通转弯的方向移动直到到达下一双幅路径。在一些实施例中,因为路径 区段开始和停止于交叉点处,所以将在另一所接收的交叉点(但并不必然是下一交叉点, 如果诸如左转车道这样的道路被接收作为独立的路径区段的话)处到达下一双幅路径。例 如,从交叉口 2820,该过程会从交叉点2820横穿路径2810,直到在达交叉点2815处到达下 一双幅路。
[0308] 过程2600然后(在2635)确定在2630处到达的双幅路径是否具有沿起源双幅路 径相反方向的行进方向。这基本上是快速确定第二双幅路是否可能是第一双幅路的配对路 径(即它们是否可能是同一道路的两侧)。在大多数情况下,由于通常构建道路的方式的本 质,这个下一双幅路将是配对路径。
[0309] 在第二双幅路不是沿起源路径的相反方向的情况下,该过程前进到2625以存储 新到达的交叉点,以供随后在确定是否将其与任何其他所接收的交叉点一起包括时使用。 例如,如果左转驶离路径2806到达了具有向下行进方向的另一双幅路,则路径2806可被认 为在数据中没有配对对象(至少对于考虑交叉点而言),但是新标识的路径可能自己具有 配对对象。
[0310] 另一方面,如果两个双幅路具有相反的行进方向,则该过程(在2640)标识和存储 横跨交通转弯所横穿的区段。在图28的示例中,从交叉点2820到交叉点2815的区段会被 存储。在一些实施例中,这个区段将被用作附加交叉点合并过程的一部分。随后,该过程结 束。
[0311] 以上过程2600在应用于地图区域内的所有交叉点时将生成双幅路之间的一组区 段。一些实施例使用这些区段来将所接收的交叉点联结在一起以及标识要包括在单个交叉 口定义中的附加的所接收的交叉点。以下表示一些实施例的用于标识用于复杂交叉口的所 有此类"内部"区段的伪代码:
[0312] 对于是双幅路的每个区段;
[0313] 对于路径在那里可以被集合到交叉口另一侧的具有横跨交通转弯的每个连接;
[0314] 将路径上到另一侧的所有区段标记为内部区段;
[0315] 该伪代码包括确定路径是否可以从区段被集合到交叉口的另一侧。以下包括一些 实施例的用于这样的确定的伪代码:
[0316] 添加第一区段到路径;
[0317] 获得来自路径上上一区段的连接;
[0318] 迭代通过每个连接以寻找到另一侧的连接或者寻找作为最佳延续的连接;
[0319] 如果连接是另一侧,则标记成功并结束;
[0320] 如果没有连接是另一侧并且没有连接是最佳延续,则标注失败并结束;
[0321] 否则:
[0322] 添加区段到路径末端;
[0323] 如果路径太远,则标记失败并结束;
[0324] 如果太多横跨,则标记失败并结束;
[0325] 否则返回以获得用于所添加区段的连接并且迭代通过连接;
[0326] 图29概念性地例示了用于将几个交叉点一起联结为单个交叉口并标识交叉口的 分支的过程2900。过程2900开始于(在2905)接收双幅路之间的一组相交区段。在一些 实施例中,这些区段可以利用诸如图26中所示过程那样的过程来标识。地图服务然后将相 互相交(即在所接收的交叉点处)的此类区段的集合分组在一起。图30例示了在具有路径 3005和3006的双幅路与具有路径3010和3011的双幅路之间的常常存在的交叉口 3000。 这组相交区段在这个图中被示为较粗的线条。
[0327] 该过程然后(在2910)标识所有交叉点以及在交叉点处直接连接到这组相交区段 的路径区段。即,这组相交路径在交叉点处相交,但是这些交叉点可包含另外的路径区段。 例如,在示例性交叉口 3000中,离开交叉口的八个双幅路径区段都在这四个交叉点处与内 部(较粗)路径区段相交。因此,这四个交叉点和八个外部路径区段全都包括在这个交叉 口中。
[0328] 另一方面,图31例示了交叉口 3100,其中左转通道被定义为独立的路径区段。在 这种情况下,因为左转通道在初始地图数据中所接收的交叉点处与内部区段相交,所以这 些通道被过程2900标识。在大多数情况下,左转通道在地图数据中可以被表征为交流道或 单幅路。
[0329] 以下表示一些实施例的用于标识被作为对于交叉口而言为"内部的"对待的所有 转弯通道的伪代码:
[0330] 对于是双幅路的每个区段;
[0331] 对于路径在那里可以集合到内部区段的具有横跨交通转弯的每个连接;
[0332] 将路径上到内部区段的所有区段标记为内部区段本身;
[0333] 这个伪代码包括确定路径是否可以从区段(例如转弯通道)集合到内部区段。以 下包括一些实施例的用于这样的确定的伪代码:
[0334] 添加第一区段到路径;
[0335] 获得来自路径上上一区段的连接(即在交叉点处连接到上一区段的区段);
[0336] 迭代通过每个连接以寻找内部区段或者寻找作为最佳延续的连接;
[0337] 如果连接是内部区段,则标记成功并结束;
[0338] 如果没有连接是内部区段并且没有连接是最佳延续,则标注失败并结束;
[0339] 否则:
[0340] 添加区段到路径末端;
[0341] 如果路径太远,则标记失败并结束;
[0342] 如果太多横跨,则标记失败并结束;
[0343] 否则返回以获得用于所添加区段的连接并迭代通过连接;
[0344] 然后,过程2900 (在2915)定义新交叉口作为包括所有所标识的交叉点和路径区 段,包括直接与初始那组路径区段相交的那些。在一些实施例中,在图31中所例示的示例 中,左转通道在那里离开其起源双幅区段的交叉点以及与初始区段相交的左转通道会被包 括。在这种情况下,一些实施例标识用于交流道或单幅路径区段的另一交叉点(即起始交 叉点),其将是路径区段在进入交叉口之前与双幅路径区段中的一者相交的地方。当单幅路 径区段保持为是内部于(假定的)一对双幅路径达阈值距离(例如lkm)时,一些实施例假 设该路径区段为双幅路径所限定的道路的一部分,并且不考虑该交叉点。
[0345] 在处理双幅路外的交流道或其他连接道(例如图32的交叉口 3200中所示的交流 道3205)时,一些实施例不将该交流道视为进入双幅交叉口的路径。相反,一些实施例将该 路径表征标识为交流道,并且尝试形成包括该交流道的起始和结束交叉点的闭合环路。当 这个闭合环路与新限定的交叉口共享公共交叉点(通常将是这样的情况)时,交流道可以 与交叉口相关联,但是不被视为这个交叉口的内部路径。另一方面,当新限定的双幅交叉 口由于存在例如左转通道而扩展,使得交流道交叉点被现在包括相交单幅路的交叉口涵盖 (如同图33的交叉口 3300中的交流道3305)时,一些实施例将交流道视为内部于新限定的 交叉口。在交叉口的描述中,这些左转通道、交流道等通常将被消除,因为用户一般不会希 望复杂指令,相反而是希望指令"右转上圣维森特大道"或类似指令。
[0346] 对于形成所限定的交叉口的这组区段和交叉点,该过程需要将双幅路并入单交叉 点分支。过程2900然后(在2920)限定进入交叉口的所有路径的集合,并且(在2925)限 定离开交叉口的所有路径的集合。对于是单向路径(双向道路的一半)的双幅路,路径通 常将具有出口侧和入口侧。为了合并的目的,一些实施例将每个区段(离开交叉口的区段 和进入交叉口的区段)视为分开的路径。一些实施例中,不内部于双幅路(例如图34的交 叉口 3400中的附加双向路径3405)的单幅路通常将被视为独立分支,并且不是合并分析的 一部分。
[0347] 然后,该过程(在2930)确定入口路径集合是否包括任何未配对的双幅路径。当 在该集合中没有这样的路径剩余(或开始就不存在任何这样的路径)时,该过程(在2935) 将出口路径集合中剩余的任何未配对双幅路存储为交叉点的独立分支。一般而言,这将在 地图数据错误标签(道路实际上是单向街道)或者合并标准过于严苛(留下一对入口和出 口路径未配对)的情况下发生。
[0348] 当存在未配对的入口路径时,该过程(在2940)选择这些入口路径中的一者。该 过程然后(在2945)确定在出口集合中是否存在潜在的配对对象。潜在的配对对象在一些 实施例中是通过向左(对于左侧驾驶区域而言向右)横穿先前所标识区段或者按顺时针方 式贯穿交叉口而找到的双幅路。
[0349] 当不存在潜在的匹配对象(例如横穿中的下一所标识的双幅路也是入口路径,或 者出口集合为空)时,该过程(在2950)将该入口路径存储为交叉口的独立分支,然后返回 到2930以寻找下一未配对的入口路径。另一方面,当存在潜在的配对对象时,一些实施例 (在2955)确定潜在的配对是否满足一组双幅匹配标准。这些是在一些实施例中确定一对 双幅路实际上是否是同一道路的两侧的标准。一些实施例确定(1)这两个路径在这些路径 进入/离开交叉口处是否在阈值距离(例如25m、50m等)内,以及(2)这些路径在交叉口 内碰到其交叉点的角度是否在相互的阈值范围内(例如5°、10°等)。为了计算角度,一 些实施例使用与交叉口的边缘最接近的顶点(或者路径区段与交叉口内的其他区段相交 的交叉点位置)以及位于特定的预定距离(例如50m)之外的顶点。该过程然后为这两个 顶点之间的线条计算偏离北方的角度。
[0350] 在一些实施例中,地图绘制应用程序附加地还考虑路径的名称来确定它们是否匹 配。当名称匹配时,这样的实施例可以放松用于配对对的几何标准(即允许路径之间更大 的距离或者路径之间更大的角度差)。匹配名称可以是例如"CA-1南向"和"CA-1北向", 或者如果两条路径都包括"威尔希尔大道"作为其名称中的一者。一些实施例还可以考虑 道路分类数据来信任配对的双幅路。
[0351] 如果这两个路径匹配,则该过程(在2960)将这些路径合并为新限定的交叉口的 单个分支。如上文所指示,交叉口被存储为以不同角度的一组分支。对于合并路径,一些实 施例将角度存储为构成该分支的两个路径的角度的平均值。图35例示了将八路径交叉口 3500简化为四个分支,其中右分支3510的角度相对于水平线的偏离为右出口路径3505相 对于水平线的偏离的一半,因为右入口路径位于水平线上。如概念性地所示,在一些实施例 中不为交叉口分支存储方向(入口 /出口)。地图服务利用地图数据生成路线,其包括交叉 口和道路的行进方向,从而路线将不会在交叉口的分支上行进错误路途。
[0352] 另一方面,当路径不匹配时,该过程(在2965)将这些路径中每一者存储为交叉口 的独立分支。图36例示了将另一八路径交叉口 3600简化为五个分支。在这种情况下,右侧 的双幅路径3605和3606不合并,并且因此被视为简化交叉口的独立分支3610和3611。在 这个示例中,这些分支中每一者离开交叉口的角度是为该分支存储的角度(不进行平均)。 过程2900然后返回到2930以确定是否还有任何入口路径。如所述,一旦入口路径集合为 空,则该过程前进到2935,并且随后结束。
[0353] 以下表示一些实施例的用于一旦已经为交叉口标识了内部区段(例如过程2900 的一些或所有所执行的操作)就生成用于交叉口的数据的伪代码:
[0354] 聚集触碰交叉口内部区段的所有外部区段;
[0355] 标识被交叉口中内部区段包围的外部区段并且将它们标记为内部的;
[0356] 将表示同一道路的入内和外出区段对分组在一起;
[0357] 为每个对以及为每个未配对道路计算外出角度;
[0358] 构建对于每个角度具有一个分支的模板交叉口图案;
[0359] 如果对于先前生成的交叉口存在图案,则使用已有图案以节省空间(将交叉口标 引到已有图案);
[0360] 否则如果图案不存在,则创建和存储图案的新条目;
[0361] 如所指出的那样,一些实施例将每个交叉口存储为数据结构。这个数据结构指示 交叉口的分支以及分支进入和/离开交叉口的角度。图37概念性地例示了一些实施例的 用于点型交叉口的此类数据结构3700的一个示例。如图所示,交叉口包括交叉口 ID(其在 一些实施例中是唯一标识符)、地图数据关联、和一组具有角度和类型的分支。地图数据关 联在一些实施例中将交叉口数据结构与地图内的实际位置相关联。在一些实施例中,这简 单的是纬度/经度点,但是在其他实施例中也可以由其他数据构成(例如在交叉口处相会 的路径区段或聚集路径的列表)。每个分支包括类型和角度。类型在一些实施例中是交叉 口类型。一些实施例定义两个交叉口类型:点和环岛。但是,其他实施例可以包括附加交 叉口类型,诸如交通广场。一些实施例将交叉口类型存储为交叉口的属性,而不是单独为 每个分支存储,但是其他实施例认识到交叉口可能部分地为环岛但部分地为点交叉口这种 可能性。数据结构3700包括四个分支,位于基本方向0° (北)、90° (东)、180° (南)、 和-90° (西)。在一些实施例中,交叉口数据结构还包括对任何交叉点(即从地图数据提 供方接收的数据)的标引和包含在所限定的交叉口内的路径区段。对于两个双幅路的一种 典型交叉口,此类数据结构涉及四个交叉点。
[0362] 图38例示了一些实施例的用于环岛交叉口的数据结构3800。一些实施例为环岛 交叉口提供专门的处理。以下表示一些实施例的用于生成用于环岛交叉口的交叉口数据的 伪代码:
[0363] 标识所有环岛区段;
[0364] 对于每个环岛区段:
[0365] 聚集所有邻接的环岛区段;
[0366] 将所聚集的环岛区段标记为已处理;
[0367] 由这个集合的环岛区段构建环岛交叉口;
[0368] 在一些情况下,地图数据标识环岛(例如作为路途形式或通过另一指示器)。这允 许地图服务交叉口计算器开始其专门的自动化环岛处理。具体地,当执行环岛处理时,地图 服务尝试标识扩口连接道(即道路的扩口进入和离开环岛的部分)对。在一些实施例中, 交叉口计算器贯穿环岛(例如对于右侧驾驶按逆时针方式)来寻找在特定距离(例如角度 距离)内跟随有入口路径的出口路径。该过程然后确定是否组合这些路径,考虑与用于在 点交叉口处合并双幅路的那些因素类似的因素。例如,所使用的因素可包括名称是否相似、 出口 /入口路径之间的距离是否足够小、以及可能的其他因素。由于这个处理,在任意道路 在否则看起来是入口 /出口组合的路径之间与环岛相交时,一些实施例将这当作三个独立 的分支。
[0369] 为了计算分支的角度,一些实施例确定分支在哪里与环岛相交,而不是道路的接 近角度。对于入口 /出口组合,该过程取这两个路径的平均值。图39概念性地例示了将环 岛交叉口 3900简化为交叉口数据。顶部路径虽然以大约偏离北方30°的角度接近,但是被 指定为0°分支-用户主要感兴趣的是围绕交叉口的交通圆环的距离,而不是它们进入和 离开的角度。其他三个分支也被指定以基本方向,因为它们的扩口平均为这些方向。数据 结构3800显示了用于环岛交叉点3900的数据结构。但是,其他实施例使用路径进入或离 开环岛的角度,而不是路线与环岛相交处围绕环岛的距离。
[0370] 以下表示一些实施例的用于一旦已经为交叉口标识了环岛区段就生成用于环岛 交叉口的数据的伪代码:
[0371] 对于形成简单环路的环岛区段集合:
[0372] 聚集触碰环路的所有非环岛区段,按绕环路的行进方向排序;
[0373] 将表示同一道路的连续的环岛出口 /入口区段对分组到一起;
[0374] 为每个对以及每个未配对区段分配角度;
[0375] 从所有角度减去最小角度(从而最小角度=〇);
[0376] 构建模板交叉口图案,其中对于每个角度有一个分支;
[0377] 如果对于先前生成的交叉口存在图案,则使用已有图案以节省空间(将交叉口标 引到已有图案);
[0378] 否则如果不存在图案,则创建和存储新的图案条目;
[0379] 如以上伪代码示例所指出的那样,一些实施例在存储交叉口时执行附加压缩。真 实世界具有数百万(或数亿)独特交叉口,但是这些交叉口中很多都具有相同的构型(尤 其是在容许非常小的角度变化的时候)。因此,不是为这数亿交叉口中每一者存储单独的数 据,一些实施例在存储交叉口时使用压缩。在每个交叉口被处理时,一些实施例存储用于该 交叉口的模板图案。在标识到具有模板图案的附加交叉口时,这样的实施例存储对该图案 的标引(同时仍然创建单独的数据结构,因为对于遵循同一图案的两个交叉口而言,位置 信息是不同的)。
[0380] 3.修改夺叉点数据用于导航
[0381] 上一章节介绍了复杂交叉口数据的生成,其通常是作为路线生成之前的离线过程 来进行的。但是,在路线生成时,一些实施例修改交叉口数据以传输给用户。提供路线数据 的地图服务修改角度以使它们相对于驶入方向并且将这些分支中的一者标记为出口分支。
[0382] 图40概念性地例示了一些实施例的用于修改交叉口数据以便提供用于路线的导 航信息的过程4000。如图所示,该过程开始于(在4005)接收要为其生成交叉口信息的路 线。如上所述,一些实施例为用户设备请求的每一组起点位置和终点位置生成一条或多条 路线。这些路线中每一者都包括在多个路径交叉口处(即在道路交叉口处)的一系列操控。
[0383] 如图所示,在路线被标识情况下,过程4000 (在4010)选择沿路线的下一交叉口。 一些实施例开始于从路线的起点开始的第一个交叉口(即遵循路线的用户将进行的第一 个操控)。
[0384] 很多路线涉及沿特定道路的长延伸,直行通过多个交叉口(可能包括作为同一道 路的部分的两个道路路径的交叉点,并且在那里没有其他道路相交)。在一些实施例中,导 航指令不包括关于在那里不进行转弯操控的交叉口的信息。因此,下一交叉口实际上是沿 路线的在那里将进行操控的下一交叉口。
[0385] 该过程然后(在4015)检索预计算的交叉口数据作为具有相关联角度的一组分 支。如上所述,一些实施例为每个交叉口存储数据结构,其列出交叉口的分支以及每个分支 的角度。图37和38对于点交叉口和环岛交叉口二者例示了此类数据结构的示例。
[0386] 在检索所选择交叉口的数据结构之后,地图服务旋转交叉口定义以将该定义规范 化到路线进入交叉口的方向。因此,过程4000(在4020)标识交叉口的入口分支,并且将入 口分支设置为预先确定的角度。一些实施例将进入交叉口的运动方向设置为0°,并且因此 将交叉口的入口分支设置为180°。
[0387] 该过程然后旋转交叉口的其他分支。如图所示,该过程(在4025)选择交叉口的 下一分支。在一些实施例中,分支和角度以数列、列表、或类似的数据结构存储,并且该过程 遍历这个数据结构。该过程(在4030)基于相对于入口分支的角度距离设置所选分支的角 度。例如,如果入口分支被存储为0° (即指向北),则被存储为95°的分支将被偏移180° 到-85°。此外,该过程(在4035)确定所选分支是否是交叉点的出口分支(即路线离开 交叉口的分支)。为了逐向导航指令在客户端地图/导航应用程序处正确地显示操控,设 备需要知道路线沿交叉口的哪个分支离开。因此,当所选分支是出口分支时,过程4000 (在 4040)将所选分支标记为出口分支。该过程然后(在4045)确定是否还有该交叉口的任何 另外的分支要被转换用于该路线。当还有另外的分支时,该过程返回到4025以选择交叉点 的下一分支。当对于当前交叉口已经处理了所有分支时,过程4000(在4060)确定沿该路 线是否还有另外的交叉口需要被修改。当还有另外的交叉口时,该过程返回到4010以选择 下一交叉口。
[0388] 当最后一个交叉口被修改时,该过程结束。
[0389] 图41例示了通过交叉口 4100所采取的路线的概念性绘图、用于该交叉口的数据 结构4105、和对数据结构修改以创建用于逐向导航指令的新数据结构4110。如图所示,路 线从右侧(90°分支)进入交叉口,并且在底部(-162°分支)离开该交叉口。在修改后的 数据结构中,入口分支已经被旋转到180°,从而导致其他分支的90°旋转。18°处的分支 旋转到108°,-65°处的分支旋转到25°,-162°处的分支旋转到-72°。除了旋转角度 之外,数据结构4110还将最后一个分支标记为用于导航的出口。一些实施例提供二进制出 口字段,其中出口分支被标记以" 1",而所有其他分支被标记以" 〇 "。
[0390] B.自话应显示的图形指示器的客户端侧动杰牛成
[0391] 上一章节介绍了在逐向导航中使用的交叉点(即交叉口)数据的生成。但是,一 旦用户设备接收到这个交叉点数据,运行于该设备上的地图客户端应用程序就必须基于交 叉点数据动态地生成图形操控指示器,以便提供用于路线的直观逐向导航。
[0392] 1.不同h下f中的不同指示器的示例
[0393] 在导航系统中,在向用户呈现即将到来的操控的图形表示时,有两个相互矛盾的 目标要实现,即表示的完整性以及表示的清晰性和易识性。一些实施例的地图绘制应用程 序使用一种新型自适应机制来根据上下文不同地平衡这些目标。
[0394] 对于当前显示的指令,在全屏逐向导航的上下文中,一些实施例的地图绘制应用 程序将操控抽象为两个元素:表示车辆通过交叉点的路径的突出的样式化箭头、和对应于 交叉点其他元素的不强调的一组线条和曲线。例如,T型交叉点处的右转由具有直角的大 箭头表示,该直角与平行于这个大箭头的区段中的一者延伸的较小的较暗区段联结。较小 区段还将向侧面偏移,从而车辆通过交叉点所走的路径在显示中占主导。操控的包括具有 交叉点上下文的箭头的此类表示提供了关于操控的相当完备的信息,同时保持了概括性和 容易理解。
[0395] 操控的另一表示可以完全省略交叉点上下文,并简化指示操控的主箭头。在用户 考虑超过当前操控的操控(要进行的下一操控)时,更详细的图形表示可能提供比所要求 的更多并且难以以快速扫视阅读的信息。例如,即使有空间显示用于当前操控之后的次指 令的交叉点上下文,一些实施例为了清楚起见也只显示简化箭头。这个自适应方法还有利 于空间受限的n元素。例如在多任务或者查看指令列表时,一些实施例的地图绘制应用程 序绘制较简单的操控概要,以便提供在较小区域中更容易识别的对象。
[0396] 图42例示了几个不同情境,其中地图绘制应用程序显示不同类型的图形指示器 箭头来向用户视觉地表示操控。第一情景4205例示了路线指引显示在列表视图中。列表 视图显示从起点位置前往终点位置的一系列逐向指令。在一些实施例中,用户可以在不实 际进入导航模式、或者甚至跟随路线的情况下查看逐向指令。在这个情况下,一些实施例为 每个转弯显示图形指示器的简单版本。这样做是出于节省空间的原因,以及因为在用户实 际上没有接近操控时,交叉口上下文不特别有帮助。
[0397] 第二情景4210例示了在地图绘制应用程序运行于其上的用户设备被锁定时的逐 向导航。如下文中详细所述,该应用程序即使在设备被锁定时也能够显示逐向导航指令,以 便继续为用户提供指令。在这个情景中,如图所示,在一些实施例中也显示简化箭头。这在 锁定屏幕内提供转弯(在这个示例中是右转)的简单图形指示,而不提供用户在锁定屏幕 中可能难以辨认的上下文数据。
[0398] 第三情景4215还例示了在地图绘制应用程序工作于其上的设备上地图绘制应用 程序没有打开(或者当前没有显示)时的逐向导航。如上详细所述,该应用程序在地图绘 制应用程序没有被显示时在通知标幅内显示逐向导航指令。很大程度上与锁定屏幕模式类 似,地图绘制应用程序使用简单图形指示器用于所指示的操控(在这个示例中是左转)。由 于空间限制以及上面为锁定屏幕模式所述的原因,使用简单图形指示器。
[0399] 前面三个情景例示了使用简单图形指示器的情况。本领域的普通技术人员将认识 至IJ,在一些实施例中,在以上情况中可使用更复杂的样式化的交叉点和操控图形指示器。下 面三个情景例示了其中使用这些更复杂指示器的指示。
[0400] 第四情景4220例示了路线概览方向,其中用户可以查看从起点位置到终点位置 的整条路线。用户可以轻扫不同指令(例如利用轻扫手势)以查看操控之间的路线区段。 这里,使用复杂交叉点指示,显示交叉口上下文(T型交叉口)和通过交叉口进行的操控,具 有在交叉口上下文上强调的操控箭头。
[0401] 第五情景4225例示了在标准逐向导航的上下文下(即不是在锁定屏幕模式中或 者有另一应用程序打开等)的导航指令。在这种情况下,使用更复杂的箭头图形指示器。在 例示的示例中,道路交叉点比前一示例略微更复杂,其中第四分支从接近方向向右并且向 上成角度。第六情景4230也例示了在逐向导航期间的导航指令。在这个情况下,正在执行 的操控是掉头。用情景4225中的交叉点分支来表示掉头会导致箭头在同一分支(底部分 支)上指向上和下。因此,该应用程序而是显示所存储的掉头指示器箭头。
[0402] 图43例示了用于同一转弯的几个情景、以及可以如何使用不同箭头用于同一转 弯。第一情景4305显示逐向导航指令中的右转上第一大街。与图42-样,使用复杂图形 指示器。第二情景4310例示了逐向导航期间右转上第一大街是两个快速连续操控中第二 个操控的情形。在这种情况下,第二指令在第一指令后不久就出现,从而该应用程序提供即 将到来的两个操控的指示。第二操控在显示上被分配较少空间,并且因此使用简化箭头。 第三情景4315例示了在路线指引列表中使用简化箭头指示器。此外,如路线指引列表中为 第二操控所示,一些实施例在该操控结束于有公路标牌/标志可用的公路上时用公路标志 (标牌)来代替简化的方向指示器。第四和第五情景4320和4325例示了在锁定屏幕模式 中和在地图绘制应用程序没有显示在设备上时用于右转的简化箭头指示器。
[0403] 2.夺叉点数据的下载和图形指示器的牛成
[0404] 在一些实施例中,地图绘制应用程序基于地图绘制应用程序的用户所选的路线来 执行导航。例如,用户可请求地图绘制应用程序搜索从第一位置到第二位置(例如从用户 家到某个餐馆)的路线。在一些实施例中,该应用程序发送请求到集中式地图服务(例如 一组运行后端地图和路线生成过程的服务器)并且接收从第一位置到第二位置的一组一 个或多个可能路线。用户然后选择这些路线中的一者来遵循。
[0405] 图44概念性地例示了一些实施例的用于在路线检测期间显示图形指示器的过程 4400。在一些实施例中,用户可以查看用于路线的方向列表(例如通过选择列表查看CTI按 钮),或者可以在也在地图上查看路线的同时一次一个地逐步查看方向(例如经由轻扫手 势)。在一些实施例中,过程4400由工作于设备(例如移动设备,诸如智能电话或触控板) 上的地图绘制应用程序来执行。
[0406] 如图所示,一些实施例的过程4400开始于(在4410)发送对路线的请求到地图服 务服务器。在一些实施例中,请求包括起点位置和终点位置,可能具有一个或多个中间位 置。用户将这些位置输入到一些实施例的地图绘制应用程序GUI,并且该应用程序通过设备 接口将路线请求传输到地图服务服务器。服务器生成路线和导航(交叉点)指令的操作在 上文中在本章节A小节中进行了描述。
[0407] 过程4400然后(在4420)接收路线和编码后的交叉点数据。在一些实施例中,地 图服务以编码后的格式传输交叉点数据。这个编码可以仅仅涉及标识类似交叉点以及标引 它们而不是重复相同交叉点信息两次,或者可以涉及附加编码。其他实施例不提供任何编 码。假设数据被编码,则该过程(在4430)对编码后的交叉点数据进行解码,以得到沿路线 的每个操控的交叉点信息。这个交叉点数据在一些实施例中包括标识交叉点的分支以及那 些分支进入/离开交叉点的角度的几何信息。与交叉点信息一起,一些实施例还包括操控 信息,其描述进行的操控(例如作为右转、掉头、公路出口匝道等等)。
[0408] 然后,该过程(在4440)为沿路线的所有交叉点生成方向指示器。方向指示器是 沿路线的路线操控的图形指示器。例如,路线可能包括第一交叉点处的右转、第二交叉点处 没有转弯、以及第三交叉点处的略微靠左。在这个示例中,这组路线指示器可以包括用于右 转的第一图形表示(例如指向右的箭头)、指示没有转弯的第二图形表示(例如直箭头)、 和用于略微靠左操控的第三图形表示(例如向左的对角箭头)。但是,一些实施例不为路线 按径直路线继续通过的交叉点生成图形表示。实际上,一些实施例对于这些交叉点不从地 图服务服务器传输交叉点数据。另一方面,一些实施例确实为沿路线的每个交叉点传输交 叉点数据,并且在一些这样的实施例中,地图绘制应用程序为每个这样的交叉点生成图形 指示器。在一些实施例中,方向指示器是由设备利用诸如下文中参考图46所述的过程4600 这样的过程来生成的。在一些实施例中,该应用程序为每个操控生成至少两个方向指示器: 包括关于交叉点的上下文信息的更复杂的第一指示器、和只显示要进行的操控的较简单的 第二指示器。
[0409] 该过程然后(在4450)确定是否已经接收到对显示路线指令的请求。如前一小节 中所示,用户可以一次一个地逐步查看指令,或者请求查看这样的路线指令的列表。在没有 接收到请求时,该过程转到4480,以确定路线检测是否已经结束(例如因为用户已经取消 路线、开始路线导航、关闭地图绘制应用程序等)。这两个操作有效地用作"等待"状态,其 中该过程等待直到接收到导致显示路线指令的事件。
[0410] 当该应用程序已经接收到这样的请求时,过程4400 (在4460)分析用于显示这一 个或多个方向指示器的上下文。在一些实施例中,上下文取决于与清楚地显示为了路线进 行导航而要求的路线操控相关联的几个因素。例如,上下文可以基于可用于显示图形指示 器的空间量(例如由于路线指引被显示在其上的设备的尺寸)、将显示指示器的条件(例如 操控是否是当前或未来的路线操控、标志将在地图绘制应用程序的哪个具体模态中被显示 等)。
[0411] 在标识了用于路线指令的上下文之后,过程4400(在4470)基于上下文显示用于 操控的方向指示器。在一些实施例中,用于显示特定方向指示器的上下文确定方向指示器 在显示时如何显现。方向指示器在一些实施例中对于不同上下文以不同图示样式出现。用 于方向指示器的静态(或简单)图示式样仅仅通过一般性外观来描述操控(例如箭头右转 指示用户右转、或者箭头略微左转指示用户略微左转等)。相反,动态图示样式适配和样式 化方向指示器以清楚地图示每个操控的重要方面。这样的样式化方向指示器还可以包括附 加线条来示出交叉点处的其他道路、以及与操控相关联的其他信息。例如,一些实施例使用 更复杂的方向指示器来一次一个操控地显示路线指令,而使用较简单的方向指示器来一次 显示所有指令的列表视图。该过程然后(在4480)确定路线检测是否已经结束一旦路线检 测已经结束,则该过程结束。
[0412] 除了显示路线指令之外,方向指示器还在逐向导航期间在多种上下文中使用。图 45概念性地例示了一些实施例的在这样的路线上执行导航的过程4500。在一些实施例中, 过程4500由运行于设备(例如移动设备,诸如智能电话或触控板)上的地图绘制应用程序 来执行。
[0413] 如图所示,过程4500开始于(在4510)确定用户是否正在对路线进行导航。艮口, 该应用程序确定用户设备的位置(例如由设备的GPS能力或其他位置追踪机制来提供)是 沿着路线的路径,还是已经偏离路线。当用户偏离路线(例如由于用户进行了与路线所指 定的那些操控不同的操控,从而使设备的位置离开路线)时,地图绘制应用程序请求对路 线和交叉点数据的更新。因此,如果运行地图绘制应用程序的设备不再在路线上,则该过程 (在4520)向地图服务服务器请求新路线和交叉点数据。该过程然后(在4530)接收修改 后的路线和用于沿该路线的所有交叉点的交叉点数据。在一些实施例中,交叉点数据由地 图服务服务器为沿路线的每个交叉点进行确定。如上所述,交叉点数据可以包括交叉点的 不同分支的角度(相对于入口方向规范化)以及交叉点的出口分支的指示。在一些实施例 中,交叉点数据由服务器从包含一组已知交叉点和角度(例如美国的所有公共道路)的存 储装置检索。在一些情况下,服务器由其他来源(例如州和市的运输部门、示出先前未存储 的道路的最近卫星照片等)来生成交叉点数据。对于路线更新,地图服务的一些实施例只 为路线的改变生成和传输新交叉点信息,而对于新旧路线共享的交叉点则标引已经接收的 数据。在一些实施例中,如上文中参考图45所述,交叉点数据被编码,在这种情况下,该应 用程序还对该数据解码以得到几何交叉点描述。
[0414] 在接收到所下载的交叉点数据之后,过程4500 (在4540)为沿路线的所有交叉点 生成方向指示器。方向指示器是沿路线的路线操控的图形指示器。例如,路线可以包括在 第一交叉点处的右转、在第二交叉点处不转弯、以及在第三交叉点处的略微靠左。在这个示 例中,这组路线指示器可以包括用于右转的第一图形表示(例如指向右的箭头)、指示不转 弯的第二图形表示(例如直箭头)、和用于略为靠左操控的第三图形表示(例如向左的对角 箭头)。但是,一些实施例不为路线按径直路径继续通过的交叉点生成图形表示。实际上, 一些实施例对于这些交叉点不从地图服务服务器传输交叉点数据。另一方面,一些实施例 确实为沿路线的每个交叉点传输交叉点数据,并且在一些这样的实施例中,地图绘制应用 程序为每个这样的交叉点生成图形指示器。在一些实施例中,方向指示器是由设备利用诸 如下文中参考图46描述的过程4600这样的过程来生成的。
[0415] 在生成了用于路线的交叉点的这组图形方向指示器之后,过程4500返回到4510 以再次确定用户是否正在对新路线进行导航。当用户设备仍然遵循路线时,过程4500 (在 4550)确定是否显示新导航标志。在一些实施例中,在对路线导航时,与交叉点相关联的每 个操控在该交叉点接近时作为标志(例如具有箭头和指示操控类型的文本信息的绿色标 志)图示给用户。当不需要新导航标志(例如因为当前所显示的标志指示的操控还没有被 执行)时,过程4500转到4580以确定导航是否已经结束。当导航已经结束时,过程4500 结束。这两个操作有效地用作"等待"状态,其中地图绘制应用程序等待要求显示新导航标 志的事件或者等待导航结束(例如因为路线的终点位置已经到达)。
[0416] 在发生要求显示新标志的事件时,过程4500 (在4560)标识用于显示该标志的上 下文。在一些实施例中,上下文取决于与清楚地显示为了对用户所选路径进行导航而要求 的路线操控相关联的几个因素。例如,上下文可以基于可用于显示标志的空间量(例如由 于导航指令显示在其上的设备的尺寸)、将显示指示器的条件(例如操控是否是当前或未 来路线操控、标志将在地图绘制应用程序的哪个具体模态中被显示等等)。
[0417] 在标识了用于导航标志的上下文之后,过程4500(在4570)基于上下文显示用于 操控的方向指示器。在一些实施例中,用于显示标志的上下文决定方向指示器在被显示在 标志上时如何显现。方向指示器在一些实施例中对于不同上下文以不同图示样式出现。用 于方向指示器的静态(或简单)图示样式通过一般性外观来描述操控(例如箭头右转指示 用户右转、或者箭头略微左转指示用户略微左转等等)。相反,动态图示样式适配和样式化 方向指示器以清楚地示出每个操控的重要方面。这样样式化的方向指示器还可以包括附加 线条来图示交叉点处的其他道路、以及与操控相关联的其他信息。
[0418] 在显示方向指示器之后,过程4500转到4580以确定导航是否已经结束。在一些 实施例中,导航在用户停止地图绘制应用程序时或者在到达目的地时结束。如果导航已经 结束,则过程4500结束。否则,过程4500转回到4510以确定路线导航是否仍然在路线上, 如上所述。
[0419] 在一些实施例中,地图绘制应用程序通过为沿路线的操控(例如转弯、继续直行 等的方向)生成图形方向指示器(例如箭头)来简化路线导航指令。图46概念性地例示 了为路线的操控生成这样的图形方向指示器的过程4600。在一些实施例中,过程4600由运 行于设备(例如移动设备,诸如智能电话或触控板)上的地图绘制应用程序来执行。在接 收到沿路线的所有交叉点的交叉点数据之后,地图绘制应用程序执行这个过程4600,在一 些实施例中是在过程4500的阶段4520执行。在一些实施例中,这个交叉点数据由地图服 务处的一组服务器生成和提供。
[0420] 如图所示,一些实施例的过程4600开始于(在4610)选择交叉点处的路线操控。 在一些实施例中,从与沿所指定路线的交叉点列表相关联的一组路线操控中选择路线操 控。用于路线的交叉点按顺序排序,在一些实施例中是根据所指定的路线排序。每个交叉 点的数据包括一组位于特定角度的分支,具有为操控指定的入口和出口分支(在一些实施 例中,入口分支通过旋转交叉点角度使得入口分支位于特定角度来指定)。
[0421] 在选择了路线操控之后,过程4600 (在4620)执行简化交叉点的过程,如果这样的 简化是需要和可能的话。在一些实施例中,简化过程使用一组折合规则来将交叉点分支适 应到特定角度(例如将角度为101. 3°的分支折合到100°或90° )。在一些实施例中,根 据图47的过程4700来执行简化过程。一些实施例通过尝试将每个分支折合为特定角度的 倍数来简化交叉点数据,而其他实施例只尝试将出口分支折合为该特定角度的倍数。
[0422] 然后,过程4600(在4630)确定地图绘制应用程序是否能够简化交叉点。如果交 叉点不能被简化,则过程4600(在4640)使用路线操控的默认表示(例如基于操控类型的 路线操控的图形图标)。另一方面,如果该应用程序能够简化交叉点,则该过程(在4650) 基于简化的交叉点生成用于操控的简单的方向指示器。在一些实施例中,简单的方向指示 器是没有任何样式化或其他特征的几何形状(例如指示操控方向的简单箭头)。例如,简单 的方向指示器可以是用于在两个道路之间的标准交叉点处的右转操控的指向上、然后直指 向右的箭头,或者可以是用于略微右转的指向上、然后对角地指向右上的箭头。过程4600 还(在4660)基于简化的交叉点数据生成复杂的方向指示器。在一些实施例中,复杂的方 向指示器是包括与路线操控相关联的标引特征的样式化的图形方向指示器。例如,复杂的 方向指示器可以包括表示在交叉点处进行的操控的强调的方向箭头、和指示交叉点处其他 道路的一个或多个不强调的线条。对于复杂的指示器,该应用程序为交叉点的用户既不通 过其进入也不通过其离开的分支显示不强调的线条,并且显示开始于入口分支且沿出口分 支结束的强调的箭头。
[0423] 在生成了简单和复杂的方向指示器之后,过程4600(在4670)确定在那里进行路 线操控的交叉点是否是路线上的最后一个交叉点。如果交叉点是最后一个,则过程4600结 束。否则,当还有在另外的交叉点处的另外的路线操控时,该过程转回到4610以选择下一 交叉点处的路线操控。
[0424] 如上文中参考图46所提到的,一些实施例的地图绘制应用程序接收交叉点数据 (其可能具有复杂几何形状)并且简化交叉点几何形状以在图形用户界面(GUI)中使用。 在一些实施例中,地图绘制应用程序通过将路线交叉点角度适配到预先指定的简化角度的 倍数来简化路线导航。图47概念性地例示了尝试将沿路线的交叉点的分支的角度设置为 预先指定的角度(例如45° )的倍数的过程4700。这个过程4700在一些实施例中在图46 的阶段4620处执行。过程4700将参考图48和49来介绍,图48和49例示了特定交叉点 情形。
[0425] 如图所示,过程4700开始于(在4710)标识进行路线操控所通过的交叉点的角 度。这些角度在一些实施例中是地图服务服务器为交叉点所指定的那些角度,并且还将这 些分支中的一者指示为出口分支。图48的上部分例示了地图上的第一点交叉点4805,具有 大概-55°、90°、和-115°的角度(以北为0° )。此外,地图显示了通过交叉点的操控, 从而得到从-115°分支略微右转到90°分支。这个上部分中的第二阶段显示了被地图服 务服务器简化为几何形状的交叉点和操控,其中交叉点数据被旋转使得操控入口分支位于 180°处。这显示了出口分支在25°处,而第三分支在-60°附近。
[0426] 此外,该图的下部分例示了地图上的环岛交叉点4810,其中用户在大约-110°处 的第一分支上进入并且在大约150°处的第二分支上离开,其中第三分支在0°处。再次, 第二阶段例示了被地图服务服务器简化为几何形状的交叉点和操控,包括旋转交叉点使得 入口分支被设置到180°。此外,交叉点被标记为环岛。
[0427] 在标识了交叉点的角度之后,过程4700 (在4720)基于一组折合规则标识对交叉 点的每个角度的可能修改。在一些实施例中,折合规则指示如何适配所接收的角度以用于 在导航期间显示。在一些实施例中,折合规则指示所接收的角度应该被修改为预先指定的 角度的倍数。例如,折合规则可以指示每个方向指示器应该符合位于45度的倍数(例如 45°、90°、135°、180° )处的几个轴线中的一者。在一些实施例中,折合规则指定所接收 的角度应该被适配到与所接收的角度最接近的45°轴线。
[0428] 例如,对于右转上相对于基准角度(即行进进入交叉点的方向)位于110°角度 的道路的右转操控,所接收的角度被折合到90°,因为45°倍数中的最接近的轴线是位于 90°的轴线。另一方面,如果道路相对于基准点位于115°角度处,则对于右转操控,角度方 向被折合到135°,因为交叉点分支的115°角度更接近135°轴线,而不是90°轴线。
[0429] 在标识了对所选择的交叉点的角度的可能修改之后,过程4700(在4730)确定所 标识的修改是否与和所接收的角度相关联的操控类型相抵触。例如,如果操控涉及在角度 10°处的略微右转,并且折合规则将10°分支角度修改为0°角度(直行通过交叉点),则 用于操控的简化方向指示器会仅仅显示用于直行的图形表示。这样的指示器的丢失会是转 弯、转向、或向右移动的任何指示。在这个示例中,直行与右转(甚至略微右转)相抵触。
[0430] 在所标识的修改与操控类型相抵触时,则该过程(在4740)搜索对交叉点的出口 分支的角度的其他修改。在一些实施例中,折合规则指定在第一角度相抵触时使用的另选 角度。例如,折合规则可指示在〇°角度被确定为与右转操控相抵触时应该使用45°角度。
[0431] 然后,该过程(在4750)确定是否找到了可接受的修改。在一些实施例中,如果所 接收的用于出口分支的角度(例如10°角度)与所标识的另选角度(例如45°角度)之 差在阈值内,则另选角度是可接受的。例如,折合规则可以将30°最大差指定为用于可接受 的另选角度的阈值。在这个示例中,所标识的45°另选角度比所接收的10°角度大35°, 并且因此会被认为是不可接受的。在一些实施例中,基于考虑角度修改上下文的一个或多 个启发式规则来进行该确定。例如,启发式规则可以指定在道路中有分叉时应该始终显示 右转。在这个示例中,甚至略微右转(例如以角度10° )也可以由另选的方向指示器(例 如以45角度)显不。
[0432] 在没有找到可接受的修改时,该过程(在4760)确定并指定对于分支中至少一个, 不能对交叉点的几何形状进行简化。如上文中参考过程4600所述,一些实施例在不能对交 叉点几何形状进简化时使用用于操控的默认表示。随后,该过程结束。
[0433] 在对于出口分支找到了可接受的修改(在4730的初始确定中或者在4750的二次 确定中)时,该过程转到4770以确定修改是否导致交叉点的两个分支重叠(即两个分支被 分配给相同角度)。在修改后交叉点的两个(或更多个)分支重叠时,该过程(在4760)确 定和指定不应该进行该修改。另一方面,在没有分支之间的重叠并且所得到的出口分支不 与操控相抵触时,则该过程(在4780)将交叉点分支的角度设置到为修改后的交叉点确定 的角度。随后,该过程结束。
[0434] 图48的每个部分中的第三阶段例示了用于这两个示例性交叉口的简化几何形 状。在点交叉点4805的情况下,该应用程序简化几何形状以将25°分支对准45°并且 将-60°分支对准-45°。因为这些对准没有产生任何问题(例如令人困惑的指令或者重 叠的分支),所以地图绘制应用程序使用简化几何形状来生成用于交叉点和操控的方向指 示器。在环岛交叉点4810的情况下,该应用程序简化几何形状以将80°分支对准90°并 且将-70°分支对准-90°。因为这些对准没有产生任何问题,所以地图绘制应用程序使用 简化几何形状来生成用于交叉点和操控的环岛方向指示器。但是在一些实施例中,简化过 程并不应用于环岛交叉点。在很多情况下,用户(即驾驶者)的视角随着环岛操控的过程 而改变,并且有时环岛大到用户最初不能看到出口道路。相反,方向指示器使用更加接近地 类似于环岛实际出口的角度。
[0435] 图49例示了其中使用默认交叉点/操控指示器而不是基于几何形状的指示器的 两个示例。第一情形是交叉点4905处的掉头操控。在这种情况下,为交叉点存储的交叉点 数据是标准交叉点,具有位于基本方向的四个分支。但是,用于操控的数据包括位于180° 的出口分支,其也是入口分支。因此,虽然对于几何形状没有必要进行简化,但是根据标准 规则会生成的方向指示器会仅仅是向下指向的箭头,与该箭头的入口部分重叠。因为这不 会是该操控的非常有用的图形指示器,所以地图绘制应用程序而是使用所存储的掉头指示 器,如这个图的上部分的第四阶段中所示。
[0436] 图49中的第二示例是公路出口 4910。在这个情况下,用于交叉点和操控的几何 形状包括入口分支、位于〇°的分支(用于沿公路继续直行)、和位于小角度(大约10° ) 的分支。但是,简化几何形状的尝试将出口分支减小到0°。这违反了多个简化规则,因为 其导致重叠的交叉点分支并且生成操控的不直观的描述,因为出口分支现在指示路线应该 沿直线继续。虽然一些实施例而是将会将出口分支偏移到45°,但是这个示例而是使用默 认的公路出口图形指示器。在一些实施例中,如上所提及的,每个交叉点还包括路线规划方 向,诸如"公路出口匝道"。在这种情况下,表明操控涉及走公路出口匝道的方向结合知道 路线是在右侧驾驶地区并且出口分支是在直线通过右边的小角度处就指示应该使用右侧 公路出口匝道图形指示器。可以使用默认表示的操控类型的其他示例在一些实施例中包括 "保持靠左"或"保持靠右"操控。
[0437] 图50例示了一些实施例不使用简化几何形状的环岛5010的一个示例。在这种情 况下,为环岛所接收的几何形状包括进入分支、位于大约110°处的分支、位于85°处的分 支、和位于大约-70°处的分支。所尝试的简化将两个不使用的(既非入口又非出口)分支 都放在90°轴线上。对于点交叉口,一些实施例可允许其用于该操控,因为进行左转的指令 会是清楚的。但是,当驾驶者绕过环岛时,他们经常将数出口数,因为角度随着视角变化而 变得不清楚。因此,减少分支数量可能会潜在地使驾驶者困惑。照此,所使用的方向指示器 完全消除出口,并且只显示具有表示操控的箭头的圆形环岛。此外,一些实施例包括附随指 令"走环岛第三个出口"或者其他类似指令。
[0438] 此外,某些情形将导致该应用程序由于可能使用户困惑而从导航标志中完全消除 方向指示器。例如,涉及从第一公路到第二公路的立交桥的交叉口可能具有沿两个或三个 不同方向前进的三条车道。在某些情况下,在服务器上生成的信息没有指定用户为了前往 期望的第二公路应该走哪条车道(即是使用左侧车道还是右侧车道)。虽然一些实施例的 该应用程序可以为这样的操控显示一般性箭头,但是这可能使用户困惑。因此,一些实施 例的导航应用程序抑制图形方向指示器,并且将指令文本在导航标志中居中。当对于第二 (目的)公路有公路标牌可用时,一些实施例将指令移动到标志的左侧,并且在标志的右侧 显示公路标牌。
[0439] 3.方向指示器软件架构
[0440] 如上所述,在一些实施例中,地图、路线、和逐向导航由工作于设备(例如手持设 备,诸如智能电话或平板电脑)上的地图绘制应用程序呈现给用户。地图绘制应用程序在 一些实施例中可以是独立应用程序,或者与设备的操作系统集成。图51概念性地例示了一 些实施例的为不同上下文生成方向指示器的地图绘制应用程序5100。本领域的普通技术人 员将认识到,为应用程序5100显示的模块是针对箭头生成过程的,并且一些实施例的地图 绘制应用程序包括多个附加模块(例如用于地图显示、路线显示、导航的附加方面等等)。
[0441] 如图所示,地图服务服务器5110通过网络5115将路线和交叉点数据传输到地图 绘制应用程序5100运行于其上的设备的网络接口 5120。地图服务服务器5110可以是与上 面图24中所示类似的服务器,其从地图绘制应用程序工作于的设备接收路线请求并且为 请求生成路线和交叉点数据。
[0442] 地图绘制应用程序5100包括交叉点解码器5130、几何形状简化器5145、箭头生成 器5160、,箭头选择器5165、上下文分析器5175、和标志生成器5180。交叉点解码器5130 接收用于路线的编码后交叉点信息5125并且对该信息进行解码以得到通过交叉点的一系 列操控。交叉点解码器5130存储解码后的交叉点数据5135。这可以是在随机存储存储器 或其他易失性存储装置中以供只在路线导航期间使用,或者是在更持久性的存储装置中, 诸如硬盘和固态存储器。如上所述,一些实施例不对交叉点信息进行编码,在这种情况下, 该应用程序不需要交叉点解码器,而是简单地存储所接收的交叉点数据。
[0443] 交叉点数据5135在一些实施例中包括根据地图服务对地图进行的分析的交叉口 的几何描述,其指示交叉口类型(例如点、环岛)以及交叉口的位于各自角度处的不同分 支。因为交叉点对应于沿特定路线进行的操控,所以交叉点数据还指示每个交叉点的出口 分支。这个图例示了一个示例性几何交叉点描述5140,具有三个分支并且出口被标记有箭 头。、在一些实施例中,180°处的分支(底部分支)总是被假设为是入口分支。
[0444] 几何形状简化器5145将交叉点数据简化为简化形式,并且存储所简化的交叉点 数据5155。与解码后的交叉点数据5135-样,这个数据在不同实施例中可以被存储在易失 性或非易失性存储器中。在一些实施例中,几何形状简化器试图根据多个启发式规则将交 叉点的每个分支折合到45°的倍数。几何交叉点描述5150是几何描述5140的简化版本。
[0445] 箭头生成器5160利用所简化的交叉点数据为每个交叉点/操控生成一个或多个 图形指示器。在根据交叉点数据生成的指示器不理想(例如对于掉头、公路出口操控等) 时,一些实施例的箭头生成器使用所存储的默认指示器5170。对于交叉点中的至少一些,箭 头生成器创建复杂方向指示器(其还包括交叉点的不强调的表示)和简单方向指示器。箭 头生成器5160在易失性或非易失性存储器中存储这些方向指示器5162以供在显示路线和 导航指令中使用。
[0446] 箭头选择器5165使用上下文分析器5175来根据指示器将在哪个上下文中被显示 来确定对于特定操控使用哪个方向指示器。这些上下文可以包括用于路线规划方向的不同 情形或者用于逐向导航指令的不同情形(例如标准模式、锁定屏幕模式、在另一应用程序 被打开时等等)。上下文分析器5175标识上下文并且将该信息提供给箭头选择器5165。
[0447] 箭头选择器挑选图形指示器5162中的一者并且将这个选择提供给标志生成器 5180。标志生成器5180生成包括所选图形指示器的用于显示的导航指令标志。标志生成器 5180还使用上下文分析器结果来生成标志的其他方面,诸如导航标志内显示的指令的详细 等级。
[0448] IV.自话应指今的动杰牛成
[0449] 如上面章节中很多附图中所示,除了显示路线期间的操控的图形指示器之外,一 些实施例的地图绘制应用程序还显示操控指令(例如"〇. 5英里后左转上Bahrami Ct. ")。 很大程度上与图形指示器类似,地图绘制应用程序利用所接收的路线/交叉点数据动态地 生成这些指令。
[0450] A.不同h下f中用于相同橾控的不同指今的示例
[0451] 一些实施例的地图绘制应用程序在大量情形中显示文本路线指令,这些情形中的 一些比其他情形更加空间受限,并且在一些情形中,代替文本指令的其他引导元素提供关 于操控的信息。不是选择单个指令串、然后受限制的约束而缩小字体或者截短,该应用程序 使用精密方法来由关于操控本身的多个细节合成最佳地适配于每个上下文的串。
[0452] 对于某个上下文,该应用程序通过考虑因素而选择指令文本,所述因素诸如是可 用空间、除了文本之外的方式(例如图形指示器、道路标志等等)传递的信息量、每个指令 变体的局部长度等。通过在客户端设备上本地地合成和评估几个可选方案(而不是简单地 从地图服务接收指令文本),地图绘制应用程序可以在每个情景中挑选最佳指令串。此外, 这个方法允许该应用程序在不同尺寸的设备上使用不同指令文本(例如与较小的智能电 话相比,在平板电脑上使用更多文本)。类似的方法也可以用于需要适应在特定时间量内的 口头指令,并且在使用语音指令时,一些实施例的该应用程序将减小所显示的指令的长度。
[0453] 图52例示了根据一些实施例的为交叉点处的特定操控合成不同指令的一个示 例。图53和54然后例示了在其中使用这些用于该操控的不同指令的情景。如图所示,地 图绘制应用程序使用所接收的路线指令和交叉点数据来标识操控指令的具体方面。表格 5205概念性地例示了可以如何为交叉点生成各个串。具体地,操控指令包括"位于"字段、 "转弯"字段、"上到"字段、"朝向"字段、和"行驶"字段。对于每个交叉点,该应用程序首先 填充这些串字段,以便由这些字段合成指令。
[0454] 在一些实施例中,"位于"字段基于包括交通信号灯和停车标志信息等的地图信 息。对于图52中所示的示例,第一交叉点发生"在道路尽头",而第二交叉点发生"在下一 交通信号灯处"。"转弯"字段描述要进行的操控;这个字段的示例包括"右转"(在第一交 叉点处执行的操控)、"驶离公路"、"靠左"、"略微左转"、"掉头"、或其他操控。包括操控描 述的路线指引可以被映射到用于"转弯"字段的不同的可能串。
[0455] "上到"字段指示操控离开交叉点而上到的路径(即街道、公路等)。在图52中第 一交叉点的情况下,操控离开交叉点"上第一大街"。"朝向"字段指示出口分支指向朝向的 标记(从地图数据或交叉点数据获得)。在一些实施例中,地图绘制应用程序分析后一交叉 点的出口分支,并且使用这个道路的名称作为"朝向"字段。在这个示例中,第二交叉点是 左转上B街,从而用于第一交叉点的"朝向"字段指示该操控"朝向B街"离开。其他实施 例使用当前交叉点的出口街道相交的下一街道、主要道路(例如公路)、或其他容易识别的 描述(例如城市等)。"行驶"字段指示路线将沿循"上到"字段中道路(即交叉点离开上 到的道路)行驶的距离。因此,在示例性指令中,下一交叉点将在0.1英里后,从而"行驶" 字段是"行驶0.1英里"。
[0456] 然后,在为一组指令生成每个组分串之后,一些实施例的地图绘制应用程序生成 不同等级的指令。表格5200例示了用于第一交叉点的一组合成的指令。具体地,表格5200 例示了对于特定交叉点的长度不同的五组指令。但是,本领域的普通技术人员将认识到,不 同实施例可基于这组串字段包括更少的、附加的、或不同的合成串。
[0457] 第一指令集使用所有这五个字段。这是最长的指令集"在道路尽头右转上第一大 街,朝向B街行驶0. 1英里"。因为这是最长的指令集,所以该应用程序为该指令集分配等 级1。第二指令集移除了"行驶"字段,只使用"位于"、"转弯"、"上到"、和"朝向"字段。第 三指令集移除了"位于"字段。这些字段添加上下文,并且因此在有附加空间可用时具有这 些字段是很好的。但是,它们对于操控本身而言较不必需,并且因此是在缩短指令文本时首 先移除的字段。然后,对于第四指令集,该应用程序移除"朝向"字段,因为"转向"和"上到" 字段被认为更重要。最后,第五指令集只包含"转向"字段,仅仅陈述"右转"。
[0458] 再次,一些实施例在(仍然说得通的)不同长度指令可用时将包括另外的指令集。 例如,一些实施例在"行驶"字段比"位于"字段短的情况下将包括移除"位于"字段但是保 留"行驶"字段的指令集。这使该应用程序能够在第二指令集("行驶"字段被移除)对于 所分配的空间而言仅仅略微过大的情况下具有另一选项。此外,一些实施例可以包括附加 的、更少的、或不同的字段。例如,一些实施例可包括"之后"字段,其给出与即将到来的交 叉点相距的距离(即"〇. 5英里后"。
[0459] 图53和54例示了几个不同情境,其中地图绘制应用程序在多个不同情形中为表 格5205中的第一交叉点的特定操控显示自适应指令的不同示例。在这种情况下,全长指令 是"〇. 5英里后,在道路尽头右转上第一大街,朝向B街行驶0. 1英里"。但是,因为示例不 包括"之后"字段,所有最高等级的指令略短于此。为了确定对于特定显示使用哪个指令集, 一些实施例的地图绘制应用程序确定用于指令集的最大长度,然后选择适合到所分配空间 内的最1?等级的集。
[0460] 第一情景5305例示了在逐向导航期间显示的用于特定操控的指令。在这种情况 下,该应用程序为指令分配三个文本行。距离(0.5英里)已经以大字体显示在导航标志顶 部,但是这不算作文本行中的一者。有三个行可用,在导航标志中可以使用最高等级的指令 集。
[0461] 第二情景5310例示了在处于锁定屏幕模式中期间用于特定操控的逐向导航指 令。在这个模式中,在一些实施例中只分配两行大文本,从而适合的最高等级的指令只使用 "转向"和"上到"字段。这简化为转弯方向和用户转上的街道。第三情景5315例示了在地 图绘制应用程序在设备上没有打开期间用于该操控的导航指令,在该情形下,指令作为警 示标幅而出现。在这种情况下,该应用程序只为指令分配一行,从而使用最低等级指令("右 转,,)。
[0462] 第四情景5320例示了在路线指引的列表视图中的信息显示。这个视图如上所述 列出后续用于沿路线的每个操控的指令。在一些实施例中,列表视图中用于每个方向的标 幅具有可变的高度,并且因此总是使用全长指令集。因此,在列表中对于第一操控使用最高 等级的指令集"在道路尽头右转朝向B街上第一大街"。如图所示,该操控与下两个操控相 比使用额外的文本行。
[0463] 第五情景5325例不了 3D模式中的逐向导航。与第一情景5305相比,一些实施例 当处于3D模式中时在导航标志中为指令集分配较少空间,以便能看到更多3D显示。同样, 该应用程序使用第三等级的指令集,因为这是利用给定的文本尺寸适合在两行中的最大指 令。
[0464] 图54例示了地图绘制应用程序在其中使用合成的指令集的另外的情景。第六情 景5405例示了用户可以逐步查看(例如通过掠扫手势)的路线概览指令的显示。在一些 实施例中,该应用程序为逐步查看指令分配与逐向导航相同的空间量,并且因此该应用程 序又使用包括所有字段的最高等级指令集。
[0465] 第七情景5410与第一情景5305相同,但是明确地指出口头导航被关闭。在这里 提供这个情景是为了与第八情景5415对比,在第八情景中,在逐向导航期间语音指令被启 用。对于语音导航,该应用程序确定允许用于读出指令的最大时间量,然后确定在这个所分 配的时间内可以读出的最高等级的指令集。在这种情况下,该时间允许选择最高等级指令 集的整体。此外,在语音导航被激活时,该应用程序减小所显示的导航标志的尺寸。这样, 该应用程序在显示内显示第三等级的指令集。
[0466] 最后,一些实施例的地图绘制应用程序可以工作于具有不同尺寸显示屏幕的不同 类型的设备上。例如,该应用程序可工作于智能电话和更大的平板电脑上。当工作于较大 设备上时,一些实施例允许更多空间用于导航标志。第九情景5420例示了在较大设备(平 板电脑)上的逐向3D导航。不同于第五情景5325,导航标志提供足够的空间供最高等级指 令集使用。
[0467] 以上描述介绍了一些实施例,其为操控生成几个不同指令集、对这些指令集划分 等级、然后自适应地确定这些指令集中哪一个最佳地适合到特定空间内。在一些实施例中, 该应用程序标识可用于指令显示的最大字符数量。该应用程序然后从最高等级指令集开 始,并且确定该指令集是否适合所标识的字符数量。当指令集适合时,该应用程序选择并显 示这个指令集。在指令集不适合时,该应用程序移到下一等级指令集并且执行相同测试。如 果这些指令集中没有任何指令集适合,则该应用程序使用最接近适合的那个。一些实施例 然后截短指令集,并且用省略号指示指令集不完全适合在空间内。这可能导致从串中移除 元素。
[0468] 除了文本之外,一些实施例在指令集中使用文本替代物。具体地,对于由标牌标志 表示的道路(例如州际公路、州级道路),该应用程序使用道路的标牌表示,而不是道路名 称(例如里面有"1-5"的蓝红标牌来代替"金州公路"或"5号州际公路")。一些实施例在 评估不同指令集时将这些标志视为固定字符数量。
[0469] 以上描述介绍了地图绘制应用程序的一些实施例,其中关于使用哪些元素的决定 主要是基于试图使用最大长度指令集。一些其他实施例考虑指令集的某些元素是否以另一 视觉方式呈现给用户,并且可以潜在地移除这些元素。
[0470] 例如,在显示清楚地表明转弯是略微右转的详细指令箭头时,一些实施例缩短指 令以移除"略微"或甚至移除对转弯的整个标引,而是使用沿行"CA-17S,朝向圣塔克鲁兹" 的指令。类似地,如果显示大的道路标牌标志,则指令的"CA-17S"部分可以被省略。
[0471] B.适配于上下文的指令的客户端侧生成
[0472] 上一章节例示了地图绘制应用程序基于路线和交叉点数据合成导航指令、然后根 据不同上下文显示这些指令的不同变体的几个示例。用户可请求地图绘制应用程序搜索从 第一位置到第二位置(例如从用户家到某个餐馆)的路线。在一些实施例中,该应用程序 将请求发送到集中式地图服务(例如一组运行后端地图和路线生成过程的服务器,诸如上 文中在章节III. A中所述的那些)并且接收一组丛第一位置到第二位置的一个或多个可能 路线。用户然后选择这些路线中的一者来遵循。
[0473] 图55概念性地例示了一些实施例的用于在路线检测期间显示文本指令的过程 5500。在一些实施例中,用户可以查看用于路线的方向列表(例如通过选择列表查看⑶I 按钮),或者可以在还在地图上查看路线期间一次一个地逐步查看这些方向(例如经由轻 扫手势)。在一些实施例中,过程5500由工作于设备(例如移动设备,诸如智能电话或触控 板)上的地图绘制应用程序来执行。
[0474] 如图所示,一些实施例的过程5500开始于(在5510)发送对路线的请求到地图服 务服务器。在一些实施例中,请求包括起点位置和终点位置,可能具有一个或多个中间位 置。用户将这些位置输入到一些实施例的地图绘制应用程序GUI中,并且该应用程序通过 设备接口将路线请求传输到地图服务服务器。服务器生成路线和导航(交叉点)指令的操 作在上面在章节III. A中进行了描述。
[0475] 过程5500然后(在5520)接收路线以及编码后的交叉点数据。在一些实施例中, 地图服务以编码后的格式传输交叉点数据。这个编码可以仅仅涉及标识类似交叉点并且标 引这些交叉点而不是重复相同交叉点信息两次,或者可以涉及附加编码。其他实施例不提 供任何编码。假设数据被编码,则该过程(在5530)对编码后的交叉点数据解码以得到用 于沿路线的每个操控的交叉点信息。这个交叉点数据在一些实施例中包括几何信息,其标 识交叉点的分支以及那些分支进入/离开交叉点的角度。与交叉点信息一起,一些实施例 还包括操控信息,其描述进行的操控(例如作为右转、掉头、公路出口匝道等)。
[0476] 然后,该过程(在5540)为沿路线的所有交叉点生成文本指令变体。文本指令变 体是由解码后的交叉点和操控信息得到的文本串组合。如上文中参考图52-54所述,这样 的文本串的示例包括"在第二交叉口处"、"左转"、"上第一大街","朝向乌尔夫道"、和"行驶 0.3英里"。在一些实施例中,过程5500将文本串组合为文本指令变体。作为这样的组合 的第一示例,过程5500可以将"在第二交叉口处"和"左转"组合生成短文本指令变体"在 第二交叉口处左转"。作为这样的组合的第二示例,过程5500可以组合所有前述文本串而 生成长文本指令变体"在第二交叉口处左转上第一大街,朝向沃尔夫路行驶〇. 3英里"。在 一些实施例中,过程5500基于在每个变体中传递的信息量来为每个交叉点对文本指令变 体划分等级。在一些实施例中,文本指令变体由设备利用诸如下文中参考图58所述的过程 5800这样的过程来生成。
[0477] 该过程然后(在5550)确定是否已经接收到对显示路线指令的请求。如前一子节 中所示,用户可以一次一个地逐步查看指令,或者请求查看这样的路线指令的列表。在没有 接收到请求时,该过程转到5580,以确定路线检测是否已经结束(例如因为用户已经取消 路线、开始路线导航、关闭地图绘制应用程序等)。这两个操作有效地用作"等待"状态,其 中该过程等待直到接收到导致显示路线指令的事件。
[0478] 在该应用程序已经接收到这样的请求时,过程5500 (在5560)分析用于显示这一 个或多个文本指令的上下文。在一些实施例中,上下文取决于与清楚地显示为了对路线进 行导航而需要的指令相关联的几个因素。例如,上下文基于可用于显示文本指令的空间量 (例如由于路线指引所显示于的设备的尺寸)或将显示指示器的条件(例如操控是否是当 前或未来路线操控,标志将在地图绘制应用程序的哪个具体模态中被显示等等)。
[0479] 在标识了用于路线指令的上下文之后,过程5500(在5570)基于上下文显示用于 操控的文本指令。在一些实施例中,用于显示特定文本指令的上下文决定显示哪个文本指 令变体。文本指令变体在一些实施例中对于不同上下文以不同长度出现。在一些实施例中, 与较短指令变量相比,较长的文本指令变量传递更多信息。但是,较长指令变量可能不适合 小标幅,或者可能导致文本行上的卷绕效果。例如,一些实施例使用较长文本指令变量用于 在标准逐向导航视图中一次一个操控地显示路线指令,但是使用较短文本指令变量用于在 较少空间被分配时(诸如在导航开启但是设备处于另一应用程序中时)显示相同操控。该 过程然后(在5580)确定路线检测是否已经结束,如上所述。一旦路线检测已经结束,则该 过程结束。
[0480] 除了在实际沿路线行进之前显示路线指令之外,文本指令还在逐向导航期间在多 个上下文中使用。图56概念性地例示了一些实施例的在这样的路线上执行导航的过程 5600。在一些实施例中,过程5600由运行于设备(例如移动设备,诸如智能电话或触控板) 上的地图绘制应用程序执行。
[0481] 如图所示,过程5600开始于(在5610)确定用户是否正在对路线导航。即,该应 用程序确定用户设备的位置(例如由设备的GPS功能或其他位置追踪机制提供)是沿路线 的路径还是已经偏离路线。在用户偏离路线(例如因为用户进行了与路线所指定的那些操 控不同的操控,从而使设备的位置偏离路线)时,地图绘制应用程序要求对路线和交叉点 数据的更新。因此,如果运行地图绘制应用程序的设备不再在路线上,则该过程(在5620) 向地图服务服务器请求新的路线和交叉点数据。该过程然后(在5630)接收修改后的路线 和沿路线的所有交叉点的交叉点数据。在一些实施例中,交叉点数据由地图服务服务器为 沿路线的每个交叉点确定。如上所述,交叉点数据可以包括交叉点的不同分支的角度(相 对于入口方向规范化)以及交叉点的出口分支的指示。在一些实施例中,交叉点数据由服 务器从具有一组已知交叉点和角度(例如美国的所有公共道路)的存储装置检索。在一些 情况下,服务器从其他来源(例如州或市的运输部门、显示先前未存储的新道路的最近卫 星照片等)生成交叉点数据。对于路线更新,地图服务的一些实施例只为对路线的改变生 成和传输新的交叉点信息,而对于新老路线共享的交叉点则标引已经接收的数据。
[0482] 然后,过程5600 (在5640)对编码后的交叉点数据解码以得到用于沿修改后的路 线的每个操控的交叉点信息。这个交叉点数据在一些实施例中包括几何信息,其标识交叉 点的分支以及那些分支进入/离开交叉点的角度。除了交叉点信息之外,一些实施例还包 括操控信息,其描述进行的操控(例如作为右转、掉头、公路出口匝道等)。
[0483] 该过程然后(在5650)生成用于修改后的路线中交叉点的文本指令变体。文本指 令变体是从解码后的交叉点和操控信息得到的文本串的组合。如上文中结合图52-54所 述,这样的文本串的示例包括"在第二个交叉口处"、"左转"、"上第一大街","朝向沃尔夫 路"、和"行驶0.3英里"。在一些实施例中,过程5500将文本串组合成文本指令变体。作为 这样的组合的第一示例,过程5500可以将"在第二交叉口处"和"左转"组合生成短的文本 指令变体"在第二交叉口处左转"。作为这样的组合的第二示例,过程5500可以组合所有前 述文本串而生成长文本指令变体"在第二交叉口处左转上第一大街,朝向沃尔夫路行驶〇. 3 英里"。在一些实施例中,过程5500基于每个变体中所传递的信息量为每个交叉点对文本 指令变体划分等级。在一些实施例中,文本指令变体由设备利用诸如下文中参考图58所述 的过程5800这样的过程来生成。
[0484] 在为修改后的路线中的交叉点生成了这组文本指令变体之后,该过程返回到 5610以再次确定用户是否正在对新路线进行导航。当用户设备仍然沿循该路线时,过程 5600(在5660)确定是否显示新导航指令。在对路线进行导航时,在一些实施例中,与交叉 点相关联的每个操控在该交叉点接近时作为标志(例如具有箭头和以某详细等级描述该 操控的文本指令的绿色标志)图示给用户。
[0485] 当不需要新导航指令(例如由于当前所显示的指令指示的操控还没有被执行) 时,该过程(在5675)确定是否更新当前显示的指令。如前一章节中所示,在一些实施例中, 导航标志包括在操控之前还剩余的距离的指示器。在一些实施例中,地图绘制应用程序随 着操控接近而定期地更新这个距离指示器(例如每英里、然后每0. 1英里、然后每50英尺 等等)。当已经到达距离阈值从而所显示的指令必须更新时,过程5600(在5680)更新所显 示的指令。在一些实施例中,这涉及更新数字和/或距离单位(例如对于最后0. 1英里,从 英里切换到英尺)。一些实施例还经由该过程工作于的设备的语音输出特征来提供对剩余 距离的更新。
[0486] 该过程然后前进到5685以确定导航是否已经结束。在导航已经结束时,过程5600 结束。操作5660、5675、和5685 -起有效地用作"等待"状态,其中地图绘制应用程序等待 要求显示新道行指令或更新所显示导航指令的事件、或者等待导航结束(例如因为到达路 线的终点位置)。
[0487] 在发生要求显示新导航指令的事件时,该过程(在5665)分析用于显示文本指令 的上下文。在一些实施例中,上下文取决于与清楚地显示为了对路线进行导航而要求的路 线操控相关联的几个因素。例如,上下文可以基于可用于显示文本指令的空间量(例如由 于路线指引显示于其上的设备的尺寸)或者将显示指示器的条件(例如操控是否是当前或 未来路线操控、标志将在地图绘制应用程序的哪个具体模态中被显示等等)。附加的上下文 因素可以包括指令是否还正经由语音引导特征提供给用户、设备的取向、和一些实施例中 的其他因素。
[0488] 在标识用于显示文本指令的上下文之后,过程5600(在5670)基于上下文显示用 于即将到来的交叉点的文本指令变体。在一些实施例中,用于显示特定文本指令的上下文 决定显示哪个文本指令变体。文本指令变体在一些实施例中对于不同上下文以不同长度出 现。在一些实施例中,与较短指令变体相比,较长的文本指令变体传递更多信息。但是,较 长指令变体可能不适合小标幅,或者可能导致文本行的卷绕效果。例如,一些实施例使用较 长文本指令变体用于一次一个操控地显示路线指令,而使用较短文本指令变体用于一次显 示所有指令的列表视图。一些实施例基于上下文设置字符或尺寸限制,并且选择在仍然适 合于为导航指令分配的显示区域并且保持适当文本尺寸的同时传递最多信息的文本指令 变体。
[0489] 在显示了新指令之后,过程5600转到5685以确定导航是否已经结束。在一些实施 例中,在用户停止地图绘制应用程序时或在到达目的地时,导航结束。如果导航已经结束, 则过程5600结束。否则,过程5600转回到5610以确定路线导航是否仍然在路径上,如上 所述。
[0490] 如上所述,一些实施例的地图绘制应用程序解码并合成所接收的交叉点数据以便 得到用以生成导航指令的串数据。图57概念性地例示了一些实施例的用于对编码后的交 叉点数据进行解码并且由从地图服务接收的路线和交叉点数据合成指令元素的过程5700。 在一些实施例中,过程5700由地图绘制应用程序执行。地图绘制应用程序在接收到沿路线 的所有交叉点的交叉点数据之后执行这个过程5700,在一些实施例中是在过程5500的阶 段5530处执行。
[0491] 如图所示,过程5700开始于(在5710)接收路线中所有交叉点的编码后的交叉点 数据。在一些实施例中,该过程从地图服务服务器下载编码后的交叉点数据。在一些实施 例中,这个编码可以仅仅涉及标识类似交叉点并在这组交叉点内标引这些交叉点而不是重 复相同交叉点信息两次,或者可以涉及附加编码。此外,一些实施例接收路线指令信息,其 指示要执行的操控的类型(例如"右转"、"靠左"等等)。
[0492] 然后,该过程(在5720)选择未处理过的交叉点。在一些实施例中,该过程按从路 线起点到路线终点的顺序在路线指令所指示的每个操控处选择交叉点。一旦选择了交叉 点,该过程就(在5730)分析所选择的交叉点与前后交叉点的任何关系、以及所选择的交叉 点的特定方面。在一些实施例中,这样的分析可以包括确定路线中前后交叉点之间的距离、 确定转弯角度、标识在所选择的交叉点处执行的主操控、标识交叉点的每个分支处的道路 名称、标识当在所选择的交叉点处执行了操控之后路线行进所朝向的道路或地图上的其它 标识符。
[0493] 在分析了交叉点关系之后,该过程(在5740)利用所分析的交叉点数据合成用于 所选择的交叉点的指令元素。合成的指令元素与所选择的交叉点相关联。在一些实施例中, 合成的指令元素包括一组文本串。如上文中参考图52所述,这样的文本串的示例包括"在 道路尽头"、"右转"、"上第一大街","朝向B大街"、和"行驶0. 1英里"。
[0494] 在一些实施例中,每个文本串与一元素类别相关联。元素类别的示例包括:限定主 要操控将在那里发生的位置的"位于"元素、概述在所选择的交叉点处进行的主操控的"转 弯"元素、标识主要操控将转上的对象(即道路)的"上到"元素、标识主要操控将引导朝向 的下一对象的"朝向"元素、以及标识所选择的交叉点与下一交叉点之间距离的"行驶"元 素。但是,与这里所列出的那些相比,其他实施例可使用附加的、更少的、或不同的元素类 别。
[0495] 然后,该过程(在5750)确定是否还有任何交叉点要处理。当还有另外的交叉点 用于处理(即对于其还没有合成元素)时,过程5700返回到操作5720以选择下一交叉点。 一旦所有交叉点都已经被处理了,过程5700就结束。
[0496] 过程5700的输出是从地图服务服务器所接收的路线的每个交叉点的一组指令元 素。在一些实施例中,客户端设备上的地图绘制应用程序然后使用这些合成的指令元素为 每个交叉点生成几个文本导航指令变体。
[0497] 图58概念性地例示了一些实施例的用于生成用于在不同上下文中显示的导航指 令变体的过程5800。在一些实施例中,过程5800由运行于设备(例如移动设备,诸如智能 电话或触控板)上的地图绘制应用程序来执行。在一些实施例中,地图绘制应用程序连续 执行过程5700和5800 (即为每个交叉点合成元素、然后使用元素来生成指令文本)。
[0498] 如图所示,过程5800开始于(在5810)接收分别与特定交叉点相关联的指令元素 组。如上文中参考图57所述,在一些实施例中,这些指令元素组包括与元素类别(即"位 于"、"转弯"、"上到"、"朝向"、和"行驶"类别)相关联的文本串。
[0499] 然后,过程5800(在5820)为路线的特定交叉点选择未处理的一组指令元素。虽 然过程5700和5800例示了地图绘制应用程序首先为每个交叉点合成元素、然后生成指令 文本,但是在一些实施例中,地图绘制应用程序对每个交叉点在单个循环中执行所有这些 操作。即,一些实施例的地图绘制应用程序选择交叉点,合成其元素,然后生成指令文本变 体,之后才移到下一交叉点。
[0500] 对于所选的指令元素组,过程5800 (在5830)将这组指令元素组合成文本变体。作 为这样的组合的第一示例,过程5800可以将"在道路尽头"和"右转"组合生成较短文本指 令变体"在道路尽头右转"。作为这样的组合的第二示例,过程5800可以组合所有前述文本 串以生成较长文本指令变体"在道路尽头右转上第一大街,朝向B大街行驶0. 1英里"。一 些实施例为每个交叉点生成相同的元素组合。例如在一些实施例中,该应用程序为每个交 叉点用所有这些元素生成第一指令文本变体、只用"转弯"和"上到"元素生成第二指令文 本变体、用"转弯"、"上到"、和"朝向"元素生成第三指令文本变体等等。其他实施例考虑其 他因素来由合成的元素生成不同的指令文本变体。
[0501] 在为所选择的交叉点生成了指令文本变体之后,过程5800(在5850)根据每个变 体中传递的信息量来对指令变体划分等级。在一些实施例中,该应用程序使用长度(例如 字符数量)作为用于所传送信息的代理。其他实施例相对于其他元素组合而言更偏好特定 元素组合,即使这个方法导致将略微更短的变体划分等级到更长变体之前。例如,一些实施 例为每个交叉点使用特定元素组合,其中对于每个交叉点,每个特定组合具有相同等级。
[0502] 过程5800然后(在5860)确定是否还有任何未处理的指令元素组(即是否已经 为路线的所有交叉点生成了指令)。在还有另外的未处理的指令元素组时,过程5800返回 到操作5820以选择下一组指令元素。否则,一旦所有交叉点都已经具有生成的其指令,过 程5800就结束。
[0503] C.导航指今软件架构
[0504] 如上所述,在一些实施例中,地图、路线、和逐向导航由运行于设备(例如手持设 备,诸如智能电话或平板电脑)上的导航应用程序呈现给用户。导航应用程序在一些实施 例中可以是独立应用程序,或者与设备的操作系统集成。图59概念性地例示了包括一些实 施例的为不同上下文生成文本指令的地图和导航应用程序5900的一种系统架构。本领域 的普通技术人员将认识到,为应用程序5900所示的模块是针对文本指令生成过程的,一些 实施例的地图和导航应用程序将包括多个附加模块(例如用于地图显示、路线显示、导航 的附加方面等等)。
[0505] 如图所示,地图服务服务器5910通过网络5915将路线和交叉点数据传输到地图 和导航应用程序5900所运行于的设备的网络接口 5920。在一些实施例中,地图服务服务 器5910从导航应用程序5900所运行于的设备接收路线请求,并且为请求生成路线和交叉 点数据。
[0506] 导航应用程序5900包括交叉点解码器5930、指令生成器5945、指令检索器5960、 上下文分析器5965、标志生成器5970、箭头选择器5975、和绘图引擎5980。交叉点解码器 5930接收用于路线的编码后的交叉点信息5925,对该信息进行解码以得到描述每个交叉 点和在交叉点处执行的操控的信息,并且为路线中的每个交叉点合成一组指令元素。在一 些实施例中,交叉点解码器5930执行图57的过程5700,如上所述。交叉点解码器5930对 编码后的交叉点5925进行解码以生成解码后的交叉点数据5935。
[0507] 在一些实施例中,编码后的交叉点5925和解码后的交叉点5935可以在设备上存 储在随机存取存储器或其他易失性存储装置中以只在路线导航期间使用,或者存储在更持 久性的存储装置(诸如硬盘或固态存储器)中。如示例性表格5940所示,一些实施例例如 以表格、数列、或类似数据结构为每个交叉点存储一组文本串元素。如上所述,图52例示了 为特定一组交叉点存储的这样的表格的一个示例。
[0508] 指令生成器5945基于从交叉点解码器5930接收的合成的指令元素5935生成用 于在设备上显示的划分等级的文本指令变体5955。在一些实施例中,指令生成器5945执行 图58的过程5800,如上所述。在一些实施例中,划分等级的文本指令变体5955可以在设备 上存储在随机存取存储器或其他易失性存储装置中以只在路线导航期间使用,或者存储在 更持久性的存储装置(诸如硬盘或固态存储器)中。如上所述,图52还例示了指令生成器 5945生成的划分等级的指令变体5955的一个示例。示例性表格5950例示了将元素5940 合成为用于在导航显示的不同上下文中使用的几个文本指令变体的结果。
[0509] 指令检索器5960使用上下文分析器5965来根据文本指令将在什么上下文中被显 示,确定为操控的特定显示选择哪个指令变体。这些上下文可以包括用于路线规划方向的 不同情形或者用于逐向导航指令的不同情形(例如标准模式、锁定屏幕模式、在另一应用 程序打开时、在语音导航激活时等等)。在一些实施例中,上下文取决于与清楚地显示为了 对路线进行导航而要求的路线操控相关联的几个因素。例如,上下文可以基于可用于显示 文本指令的空间量(例如由于路线指引被显示于其上的设备的尺寸)、将显示指示器的条 件(例如操控是否是当前或未来操控、标志将在导航应用程序的哪个具体模态中被显示等 等)、或其他因素。很多这样的上下文在上文中示于本章节的A小节内。指令检索器5960 选择用于特定操控显示的指令变体并且将该信息提供给标志生成器5970。
[0510] 箭头选择器5975也使用上下文分析器5965来根据指示器将在什么上下文中被显 示,确定为特定操控使用哪个方向指示器。箭头选择器挑选在前一章节中所述的图形指示 器中的一者(例如复杂或简单的操控表不),并且将该选择提供给标志生成器5970。标志 生成器5970生成包括所选图形指示器和指令文本变体的用于显示的导航指令标志。标志 生成器5970还使用上下文分析器结果来生成标志的其他方面,诸如多频繁地更新距离信 息以及是否使用道路标志标牌来代替道路名称。
[0511] 绘图引擎5980从标志生成器5970接收所生成的标志,并且将标志结合到显示中 以输出给显示设备(或者输出到馈入显示设备的帧缓冲区)。在一些实施例中,绘图引擎 5980将标志与2D地图、3D地图、或地图和导航应用程序显示的其他⑶I元素一起结合。
[0512] V.电子系统
[0513] 上文所述的特征和应用程序中的许多可被实现为被指定为在计算机可读存储介 质(还称为计算机可读介质)上记录的指令集的软件过程。在这些指令由一个或多个计算 或处理单元(例如,一个或多个处理器、处理器的内核或者其他处理单元)执行时,这些指 令使得一个或多个处理单元能够执行指令中所指示的动作。计算机可读介质的实例包括但 不限于CD-ROM、闪存驱动器、随机存取存储器(RAM)芯片、硬盘驱动器、可擦可编程只读存 储器(EPROM)、电可擦可编程只读存储器(EEPR0M)等。计算机可读介质不包括无线地传送 或通过有线连接的载波和电信号。
[0514] 在本说明书中,术语"软件"是指包括可以被处理器读入到存储器中进行处理的驻 留在只读存储器中的固件或者存储在磁存储装置中的应用程序。另外,在一些实施例中,可 在保留不同的软件发明的同时,将多个软件发明实现为更大程序的子部分。在一些实施例 中,还可将多个软件发明实现为单独程序。最后,共同实施这里所述的软件发明的单独程序 的任何组合均在本发明的范围之内。在一些实施例中,当被安装以在一个或多个电子系统 上运行时,软件程序定义执行和施行软件程序的操作的一个或多个特定机器具体实施。
[0515] A.移动设各
[0516] 一些实施例的地图和导航应用程序运行于移动设备上,移动设备诸如是智能电话 (例如iPhones? )和平板电脑(例如iPads? )。图60是此类移动计算设备的架构6000的 一个实例。移动计算设备的例子包括智能电话、平板电脑、膝上型电脑等。如图所示,移动 计算设备6000包括一个或多个处理单元6005、存储器接口 6010以及外围设备接口 6015。
[0517] 外围设备接口 6015耦接到各种传感器和子系统,包括相机子系统6020、一个或多 个无线通信子系统6025、音频子系统6030、输入/输出子系统6035等。外围设备接口 6015 允许处理单兀6005与各种外围设备之间的通信。例如,取向传感器6045 (例如,陀螺仪) 和加速度传感器6050(例如,加速度计)耦接到外围设备接口 6015,以便有利于取向和加速 度功能。
[0518] 相机子系统6020稱接到一个或多个光学传感器6040 (例如,电荷稱合设备(CCD) 光学传感器、互补金属氧化物半导体(CMOS)光学传感器等)。与光学传感器6040耦接的相 机子系统6020有利于相机功能,诸如图像和/或视频数据捕获。无线通信子系统6025用 于有利于通信功能。在一些实施例中,无线通信子系统6025包括射频接收器和发射器、以 及光学接收器和发射器(图60中未示出)。一些实施例的这些接收器和发射器被实现为工 作于一个或多个通信网络上,通信网络诸如是GSM网络、Wi-Fi网络、蓝牙网络等等。音频子 系统6030耦接到扬声器以输出音频(例如以输出语音导航指令)。此外,音频子系统6030 耦接到麦克风以有助于语音使能功能,诸如语音识别(例如用于搜索)、数字录制等等。
[0519] 输入/输出子系统6035涉及输入/输出外围设备(诸如显示器、触摸屏等)和处 理单元6005的数据总线之间通过外围设备接口 6015的传输。输入/输出子系统6035包 括触摸屏控制器6055和其他输入控制器6060以有利于输入/输出外围设备和处理单兀 6005的数据总线之间的传输。如图所示,触摸屏控制器6055耦接到触摸屏6065。触摸屏 控制器6055使用任何多点触感技术来检测触摸屏6065上的接触和移动。所述其他输入控 制器6060耦接到其他输入/控制设备,诸如一个或多个按钮。一些实施例包括近触感屏和 对应控制器,该控制器代替触摸交互或除了触摸交互之外可检测近触摸交互。
[0520] 存储器接口 6010耦接到存储器6070。在一些实施例中,存储器6070包括易失性 存储器(例如,高速随机存取存储器)、非易失性存储器(例如,闪存存储器)、易失性存储 器和非易失性存储器的组合,和/或任何其他类型的存储器。如图60所示,存储器6070存 储操作系统(〇S)6072。0S6072包括用于处理基础系统服务和用于执行硬件相关任务的指 令。
[0521] 存储器6070还包括:有利于与一个或多个另外设备通信的通信指令6074 ;有利于 图形用户界面处理的图形用户界面指令6076 ;有利于图像相关的处理和功能的图像处理 指令6078 ;有利于输入相关(例如,触摸输入)的过程和功能的输入处理指令6080 ;有利 于音频相关的过程和功能的音频处理指令6082 ;以及有利于相机相关的过程和功能的相 机指令6084。上述指令仅是示例性的,并且在一些实施例中,存储器6070包括另外和/或 其他指令。例如,用于智能电话的存储器可包括有利于电话相关的过程和功能的电话指令。 此外,存储器可以包括用于地图和导航应用程序以及其他应用程序的指令。以上所识别的 指令无需实现为独立的软件程序或模块。可在硬件和/或软件中,包括在一个或多个信号 处理和/或专用集成电路中,实现移动计算设备的各种功能。
[0522] 虽然图60中例示的组件被示出为独立的组件,但是本领域的普通技术人员将认 识到,两个或更多个组件可集成到一个或多个集成电路中。另外,两个或更多个组件可由一 条或多条通信总线或信号线来耦接在一起。另外,虽然许多功能已描述为是由一个组件执 行,但是本领域的技术人员将认识到,参照图60所述的功能可分到两个或更多个集成电路 中。
[0523] B.计算机系统
[0524] 图61概念性地例示实现本发明的一些实施例所利用的电子系统6100的另一个 实例。电子系统6100可以为计算机(例如,台式计算机、个人计算机、平板电脑等)、电话、 PDA、或任何其他种类的电子或计算设备。此类电子系统包括各种类型的计算机可读介质以 及用于各种其他类型的计算机可读介质的接口。电子系统6100包括总线6105、一个或多个 处理单元6110、图形处理单元(GPU) 6115、系统存储器6120、网络6125、只读存储器6130、永 久性存储设备6135、输入设备6140、以及输出设备6145。
[0525] 总线6105总体表示在通信上连接电子系统6100的许多内部设备的所有系统、夕卜 围设备、以及芯片组总线。例如,总线6105在通信上将这一个或多个处理单元6110与只读 存储器6130、GPU 6115、系统存储器6120、以及永久性存储设备6135连接。
[0526] 这一个或多个处理单元6110从这些各种存储器单元检索要执行的指令和要处理 的数据,以便执行本发明的过程。在不同实施例中,一个或多个处理单元可以为单个处理器 或者多核处理器。一些指令被传送至GPU 6115并由该GPU执行。GPU 6115可卸载各种计 算,或补充由这一个或多个处理单元6110提供的图像处理。在一些实施例中,此类功能可 以利用Corelmage的内核着色语言来提供。
[0527] 只读存储器(ROM) 6130存储这一个或多个处理单元6110和电子系统的其他模块 所需的静态数据和指令。另一方面,永久性存储设备6135是读写存储器设备。此设备是即 使在电子系统6100关闭时也存储指令和数据的非易失性存储器单元。本发明的一些实施 例使用海量存储设备(诸如磁盘或光盘以及其相应盘驱动器、集成的闪存存储器)作为永 久性存储设备6135。
[0528] 其他实施例将可移动的存储设备(诸如软盘、闪存存储器设备等,及其对应的驱 动器)用作永久性存储设备。与永久性存储设备6135 -样,系统存储器6120也是读写存 储器设备。但是,与存储设备6135不同的是,系统存储器6120是易失性读写存储器,诸如 随机存取存储器。系统存储器6120存储处理器在运行时所需的指令和数据中的一些。在 一些实施例中,本发明的过程存储在系统存储器6120、永久性存储设备6135、和/或只读存 储器6130中。例如,各种存储器单元包括用于根据一些实施例处理多媒体片段的指令。这 一个或多个处理单元6110从这些各种存储器单元检索要执行的指令和要处理的数据,以 便执行一些实施例的过程。
[0529] 总线6105还连接至输入设备6140和输出设备6145。输入设备6140允许用户将 信息传递至电子系统以及选择要传递至电子系统的命令。输入设备6140包括字母数字键 盘和指示设备(也称为"光标控制设备")、相机(例如网络摄像头)、麦克风或用于接收语 音命令的类似设备等等。输出设备6145显示电子系统所生成的图像或者以其他方式输出 数据。输出设备6145包括打印机和诸如阴极射线管(CRT)或液晶显示器(LCD)的显示设 备,以及扬声器或类似的音频输出设备。一些实施例包括充当输入设备和输出设备两者的 设备,诸如触摸屏。
[0530] 最后,如图61所示,总线6105还通过网络适配器(未示出)将电子系统6100耦接 到网络6125。这样,计算机可以是计算机网络(诸如局域网("LAN")、广域网("WAN")、 或内联网)的一部分、或者是网络的网络(诸如互联网)的一部分。电子系统6100的任何 或所有组件均可与本发明结合使用。
[0531] 一些实施例包括将计算机程序指令存储在机器可读或计算机可读介质(或者称 为计算机可读存储介质、机器可读介质或机器可读存储介质)中的电子部件,诸如微处理 器、存储装置以及存储器。这样的计算机可读介质的一些示例包括RAM、ROM、只读压缩盘 (CD-ROM)、可记录压缩盘(CD-R)、可写压缩盘(CD-RW)、只读数字多功能盘(例如DVD-ROM、 双层DVD-ROM)、多种可记录/可写DVD (例如DVD-RAM、DVD-RW、DVD+RW等等)、闪存存储 器(例如SD卡、迷你SD卡、微型SD卡等等)、磁和/或固态硬盘驱动器、只读和可记录 Blu- Ray?盘、高密度光盘、任何其他光学或磁介质、和软盘。计算机可读介质可存储计 算机程序,该计算机程序可由至少一个处理单元来执行并且包括用于执行各种操作的指令 集。计算机程序或者计算机代码的实例包括机器代码,诸如由编译器所产生的机器代码,以 及包括可由计算机、电子部件或微处理器使用解译器来执行的更高级别代码的文件。
[0532] 虽然上述讨论主要涉及执行软件的微处理器或多核处理器,但一些实施例由一个 或多个集成电路来执行,该一个或多个集成电路诸如专用集成电路(ASIC)或现场可编程 门阵列(FPGA)。在一些实施例中,此类集成电路执行存储在电路自身上的指令。此外,一些 实施例执行存储在可编程逻辑设备(PLD)、ROM或RAM设备中的软件。
[0533] 如本说明书和本专利申请的任何权利要求中所使用的那样,术语"计算机"、"服务 器"、"处理器"、和"存储器"都指代电子或其他技术设备。这些术语不包括人或者人的群组。 出于本说明书的目的,术语显示或正在显示意指在电子设备上显示。如本说明书和本专利 申请的任何权利要求中所使用的那样,术语"计算机可读介质"、"计算机可读媒介"、和"机 器可读介质"都完全限于以计算机可读的形式存储信息的有形物理对象。这些术语不包括 任何无线信号、有线下载信号以及任何其他短暂信号。
[0534] VI.地图服备h.下f
[0535] 各种实施例可工作于地图服务操作上下文内。图62例示了根据一些实施例的一 种地图服务操作上下文。地图服务6230(也称为地图绘制服务)可以为通过各种通信方法 和协议与地图服务6230通信的一个或多个客户端设备6202a-6202c提供地图服务。地图 服务6230在一些实施例中提供地图信息和其它地图相关数据,诸如二维地图图像数据(例 如利用卫星图像的道路鸟瞰图)、三维地图图像数据(例如具有三维特征(诸如建筑物)的 能穿过的地图)、路线和方向计算(例如渡轮航线计算或两点之间的步行方向)、实时导航 数据(例如二维或三维中的逐向视觉导航数据)、位置数据(例如客户端设备当前位于哪 里)、和其他地理数据(例如无线网络覆盖、天气、交通信息、或附近兴趣点)。在各种实施例 中,地图服务数据可以包括不同国家或地区的局域标签。局域标签可以用来在客户端设备 上以不同语言呈现地图标签(例如街道名称、城市名称、兴趣点)。客户端设备6202a-6202c 可以通过获得地图服务数据来利用这些地图服务。客户端设备6202a-6202c可以实现各种 技术来处理地图服务数据。客户端设备6202a-6202c然后可以提供地图服务给各种实体, 包括但不限于用户、内部软件或硬件模块、和/或客户端设备6202a-6202c外部的其他系统 或设备。
[0536] 在一些实施例中,地图服务由分布式计算系统中的一个或多个节点来实现。可以 为每个节点分配地图服务的一个或多个服务或组件。可以为一些节点分配地图服务的相同 地图服务或者组件。负载平衡节点在一些实施例中将访问或请求分配给地图服务内的其他 节点。在一些实施例中,地图服务被实现为单个系统,诸如单个服务器。服务器内的不同模 块或硬件设备可以实现地图服务提供的各种服务中的一个或多个。
[0537] 地图服务在一些实施例中通过以各种格式生成地图服务数据来提供地图服务。在 一些实施例中,地图服务数据的一种格式是地图图像数据。地图图像数据提供图像数据给 客户端设备,使得客户端设备可以处理图像数据(例如将图像数据渲染和/或显示为二维 或三维地图)。地图图像数据不管是二维还是三维的,都可以指定一个或多个地图图块。地 图图块可以是更大地图图像的一个部分。将地图的地图图块组合在一起就生成原始地图。 图块可以由地图图像数据、路线规划或导航数据、或者其他任何地图服务数据生成。在一 些实施例中,地图图块是基于栅格的地图图块,其中图块尺寸涵盖从比常用的256像素乘 256像素图块小的任何尺寸到比常用的256像素乘256像素图块大的任何尺寸。基于栅格 的地图图块可以任意数量的标准数字图像表示来编码,标准数字图像表示包括但不限于位 图C bmp)、图形交换格式(? gif)、联合图像专家组(? jpg、. jpeg等等)、可移植网络图像 (.png)、或标记图像文件格式(.tiff)。在一些实施例中,地图图块是基于矢量的地图图块, 其利用矢量图编码,包括但不限于可缩放矢量图形(.svg)或画图文件(.drw)。一些实施例 还包括具有矢量和栅格数据组合的图块。元数据或关于地图图块的其他信息也可以包括在 地图图块内或与地图图块一起包括,从而提供进一步的地图服务数据给客户端设备。在各 种实施例中,地图图块被编码,以利用各种标准和/或协议进行传输,在下面的示例中描述 了其中的一些。
[0538] 在各种实施例中,地图图块可以根据缩放水平而由不同分辨率的图像数据来构 造。例如,对于低缩放水平(例如世界或全球视图),地图或图像数据的分辨率相对于高缩 放水平(例如城市或街道级别)的分辨率不需要是高的。例如,当在全球视图中,可能不需 要渲染街道级别的人造物体,因为这样的对象在很多情况下会小到可以忽略。
[0539] 地图服务在一些实施例中执行各种技术来在为了传输而对图块进行编码之前分 析地图图块。这个分析可以对于客户端设备和地图服务二者优化地图服务性能。在一些实 施例中,根据基于矢量的图形技术针对复杂性来分析地图图块,并且利用复合和非复合层 来构建地图图块。还可以针对公共图像数据或图案对地图图块进行分析,公共图像数据或 图案可以作为图像纹理被渲染并且通过依赖于图像掩模来构建。在一些实施例中,地图图 块中的基于栅格的图像数据包含与一个或多个纹理相关联的某些掩模值。一些实施例还针 对可能与包含样式标识符的某些地图样式相关联的指定特征来分析地图图块。
[0540] 其他地图服务在一些实施例中依赖于独立于地图图块的各种数据格式生成地图 服务数据。例如,提供位置数据的地图服务可以利用符合位置服务协议的数据格式,位置服 务协议诸如是、但不限于无线电资源位置服务协议(RRLP)、码分多址(CDMA)的TIA 801、无 线电资源控制(RRC)定位协议、或者LTE定位协议(LPP)。实施例还可以从客户端设备接收 或请求标识设备能力或属性(例如硬件参数或操作系统版本)或者通信能力(例如通过无 线信号强度或者有线或无线网络类型确定的设备通信带宽)的数据。
[0541] 地图服务可以从内部或外部来源获得地图服务数据。例如,在地图图像数据中使 用的卫星图像可以从外部服务、或者内部系统、存储设备、或节点获得。其他示例可以包括 但不限于GPS辅助服务器、无线网络覆盖数据库、商用或个人目录、天气数据、政府信息(例 如建设更新或道路名称改变)、或交通报告。地图服务的一些实施例可以更新地图服务数据 (例如无线网络覆盖)以分析来自客户端设备的未来请求。
[0542] 地图服务的各种实施例可以响应客户端设备对地图服务的请求。这些请求可以是 针对特定地图或地图部分的。一些实施例将对地图的请求格式化为对某些地图图块的请 求。在一些实施例中,请求还向地图服务提供用于路线计算的起点位置(或当前位置)和 目的地位置。客户端设备还可以请求地图服务渲染信息,诸如地图纹理或样式表。在至少 一些实施例中,请求还是实现逐向导航的一系列请求中的一者。对其他地理数据的请求可 以包括但不限于请求当前位置、无线网络覆盖、天气、交通信息、或附近兴趣点。
[0543] 地图服务在一些实施例中分析客户端设备请求以优化设备或地图服务操作。例 如,地图服务可以识别出客户端设备的位置在通信弱(即无线信号弱)的区域中,并且发送 更多地图服务数据以在通信丢失的情况下提供给客户端设备或者发送使用其他客户端硬 件(例如取向传感器)或软件(例如利用无线位置服务或Wi-Fi定位,而非基于GPS的服 务)的指令。在另一示例中,地图服务可分析客户端设备对基于矢量的地图图像数据的请 求,并且确定根据图像复杂性,基于栅格的地图数据更好地优化地图图像数据。其他地图服 务的实施例可以对客户端设备请求执行类似分析,并且因此,上述示例并非旨在是限制性 的。
[0544] 客户端设备(例如客户端设备6202a_6202c)的各种实施例在不同便携式多功能 设备类型上实现。客户端设备6202a-6202c通过各种通信方法和协议利用地图服务6230。 在一些实施例中,客户端设备6202a-6202c从地图服务6230获得地图服务数据。客户端设 备6202a-6202c请求或接收地图服务数据。客户端设备6202a-6202c然后处理地图服务数 据(例如渲染和/或显示数据),并且可以将数据发送到设备上的另一软件或硬件模块或者 发送到外部设备或系统。
[0545] 根据一些实施例,客户端设备实现用于渲染和/或显示地图的技术。这些地图可 以以各种格式被请求或接收,诸如上述地图图块。客户端设备可以在二维或三维视图中渲 染地图。客户端设备的一些实施例显示所渲染的地图,并且允许用户、系统、或设备提供输 入来操纵地图中的虚拟相机,从而根据虚拟相机的位置、取向、和视场改变地图显示。各种 形式的输入设备被实现来操纵虚拟相机。在一些实施例中,触摸输入通过某些单手势或组 合手势(例如触摸并保持或者轻扫)操纵虚拟相机。其他实施例允许操纵设备的物理位置 来操纵虚拟相机。例如,客户端设备可以从其当前位置向上倾斜,以操纵虚拟相机来向上旋 转。在另一示例中,客户端设备可以被从其当前位置向前倾斜以将虚拟相机向前移动。可以 实现对客户端设备的其他输入设备,包括但不限于音频输入(例如口头字词)、物理键盘、 鼠标、和/或操纵杆。
[0546] -些实施例为虚拟相机操纵提供多种视觉反馈,诸如在从二维地图视图过渡到三 维地图视图时显示可能的虚拟相机操纵的动画。一些实施例还允许输入来选择地图特征或 对象(例如建筑物)以及突出显示该对象,从而产生保持虚拟相机的三维空间感知的模糊 效果。
[0547] 在一些实施例中,客户端设备实现导航系统(例如逐向导航)。导航系统提供方 向或路线信息,其可以被显示给用户。客户端设备的一些实施例向地图服务请求方向或路 线计算。客户端设备可以从地图服务接收地图图像数据和路线数据。在一些实施例中,客 户端设备实现逐向导航系统,其基于从地图服务和/或其他位置系统(诸如全球定位卫星 (GPS))接收的位置信息和路线信息提供实时路线和方向信息。客户端设备可以显示反映客 户端设备当前位置的地图图像数据并且实时地更新地图图像数据。导航系统可以提供用于 遵循某条路线的听觉或视觉方向。
[0548] 根据一些实施例,虚拟相机被实现为操纵导航地图数据。在一些实施例中,客户端 设备允许设备调节虚拟相机显示取向以朝向路线目的地偏置。一些实施例还允许虚拟相机 通过模拟虚拟相机的惯性运动来对转弯进行导航。
[0549] 客户端设备实现各种技术来利用来自地图服务的地图服务数据。一些实施例实 现一些技术来优化二维和三维地图图像数据的渲染。在一些实施例中,客户端设备本地地 存储渲染信息。例如,客户端存储样式表,其提供包含样式标识符的用于图像数据的渲染 指示。在另一示例中,公共图像纹理可以被存储,以减少从地图服务传送的地图图像数据 量。不同实施例中的客户端设备实现各种建模技术来渲染二维和三维地图图像数据,其示 例包括但不限于:由二维建筑物占地轮廓生成三维建筑物;对二维和三维地图对象进行建 模以确定客户端设备通信上下文;生成用于确定从特定虚拟相机位置是否看到地图标签的 模型;和生成用于在地图图像数据之间平滑过渡的模型。在一些实施例中,客户端设备还以 某些技术对地图服务数据排序或划分优先顺序。例如,客户端设备检测虚拟相机的运动或 速度,如果其超过某些阈值,则为某些区域加载和渲染详细度更低的图像数据。其他示例包 括:将基于矢量的曲线渲染为一系列点、对于与地图服务的通信弱的区域预加载地图图像 数据、基于显示缩放水平来调整纹理、或者根据复杂性渲染地图图像数据。
[0550] 在一些实施例中,客户端设备利用独立于地图图块的各种数据格式进行通信。例 如,一些客户端设备实现辅助全球定位卫星(A-GPS),并且与利用符合位置服务协议的数据 格式的位置服务通信,位置服务协议诸如是但不限于无线电资源位置协议(RRLP)、码分多 址(CDMA)的TIA 801、无线电资源控制(RRC)定位协议、或LTE定位协议(LPP)。客户端设 备还可以直接接收GPS信号。实施例还可以在地图服务要求或没有要求的情况下发送标识 客户端设备能力或属性(例如硬件参数或操作系统版本)或者通信能力(例如通过无线信 号强度或者有线或无线网络类型确定的设备通信带宽)的数据。
[0551] 图62例示了用于地图服务6230和客户端设备6202a-6202c的操作上下文6200 的一个可能实施例。在一些实施例中,设备6202a、6202b、和6202c通过一些或多个有线或 无线网络6210通信。例如,无线网络6210(诸如蜂窝网络)可以利用网关6214与广域网 (WAN)6220(诸如互联网)通信。网关6214在一些实施例中提供面向分组的移动数据服务 (诸如通用分组无线电服务(GPRS))、或者允许无线网络传输数据到其他网络(诸如广域网 6220)的其他移动数据服务。同样地,接入设备6212(例如IEEE802. llg无线接入设备)提 供对WAN 6220的通信接入。设备6202a和6202b可以是能够与地图服务通信的任何便携 式电子或计算设备。设备6202c可以是能够与地图服务通信的任何非便携式电子或计算设 备。
[0552] 在一些实施例中,通过无线网络6210和接入设备6212建立语音和数据通信二者。 例如,设备6202a可以通过无线网络6210、网关6214、和WAN 6220 (例如利用传输控制协 议/互联网协议(TCP/IP)或用户数据报协议(UDP))发起和接收电话呼叫(例如利用互 联网协议语音技术(VoIP)协议),发送和接收电子邮件消息(例如利用简单邮件传输协议 (SMTP)或邮局协议3(P0P3)),以及检索电子文档和/或流,诸如网页、照片、和视频。同样, 在一些实施例中,设备6202b和6202c可以通过接入设备6212和WAN 6220发起和接收电话 呼叫、发送和接收电子邮件消息、以及检索电子文档。在各种实施例中,任何所例示的客户 端设备都可以利用根据一个或多个安全协议建立的持久性连接与地图服务6230和/或一 个或多个其他服务6250通信,安全协议诸如是安全套接层(SSL)协议或传输层安全(TLS) 协议。
[0553] 设备6202a和6202b也可以通过其他方式建立通信。例如,无线设备6202a可 以通过无线网络6210与其他无线设备(例如其他设备6202b、蜂窝电话等)通信。同样, 设备6202a和6202b可以利用一个或多个通信子系统建立对等通信6240 (例如个人局域 网),诸如来自 Washington 的 Kirkland 的 Bluetooth Special Interest Group,Inc?的 Bluetooth?通信。设备6202c也可以与设备6202a或6202b建立对等通信(未示出)。也 可实现其他通信协议和拓扑结构。设备6202a和6202b还可以从全球定位系统(GPS)卫星 6260接收GPS信号。
[0554] 设备6202a、6202b、和6202c可以通过一个或多个有线和/或无线网络6212或 6210与地图服务6230通信。例如,地图服务6230可以将地图服务数据提供给进行渲染的 设备6202a、6202b、和6202c。地图服务6230还可以与其他服务6250通信,以获得用于实 现地图服务的数据。地图服务6230和其他服务6250还可以从GPS卫星6260接收GPS信 号。
[0555] 在各种实施例中,地图服务6230和/或一个或多个其他服务6250被配置为处理 来自任何所述客户端设备的搜索请求。搜索请求可以包括但不限于对商铺、地址、住宅位 置、兴趣点、或它们的某种组合的查询。地图服务6230和/或一个或多个其他服务6250可 以被配置为返回与多个参数相关的结果,所述参数包括但不限于输入到地址栏或其他文本 输入字段中的位置(包括缩写和/或其他简写形式)、当前地图视图(例如用户可能正在多 功能设备上查看一个位置而同时身处另一位置)、用户的当前位置(例如在当前地图视图 不包括搜索结果的情况下)、和当前路线(如果有的话)。在多种实施例中,这些参数可基 于不同优先权重影响搜索结果的组成(和/或搜索结果的排序)。在各种实施例中,返回的 搜索结果可以是基于特定标准选择的结果子集,特定标准包括但不限于搜索结果(例如某 个兴趣点)已经被请求的次数、与搜索结果相关联的质量量度(例如最高用户或编辑评论 评级)、和/或搜索结果的评论量(例如搜索结果已经被评论或评级的次数)。
[0556] 在各种实施例中,地图服务6230和/或一个或多个其他服务6250被配置为提供 在客户端设备上(诸如在地图绘制应用程序内)显示的自动完成搜索结果。例如,自动完成 搜索结果可以在用户在多功能设备上输入一个或多个搜索关键词时填充屏幕的一部分。在 一些情况下,该特征可以节省用户时间,因为所期望的搜索结果可能在用户输入完整搜索 查询之前就被显示。在各种实施例中,自动完成搜索结果可以是客户端在客户端设备上找 到的搜索结果(例如书签或联系人)、地图服务6230和/或一个或多个其他服务6250在其 他地方(例如从互联网)找到的搜索结果、和/或其某种组合。与命令的情况一样,任何搜 索查询可以由用户经由语音或者通过打字来输入。多功能设备可以被配置为在本文所述的 任何地图显示内图形地显示搜索结果。例如,图钉或其他图形指示器可以将搜索结果的位 置指定为兴趣点。在各种实施例中,响应于用户选择这些兴趣点中的一者(例如触摸选择, 诸如轻击),多功能设备被配置为显示关于所选兴趣点的附加信息,包括但不限于该兴趣点 的评级、评论或评论摘录、营业时间、店铺状态(例如开业、永久关闭等)、和/或店面图像。 在各种实施例中,任何这个信息可以被显示在响应于用户选择兴趣点而显示的图形信息卡 上。
[0557] 在各种实施例中,地图服务6230和/或一个或多个其他服务6250提供一个或多 个反馈机制以接收来自客户端设备6202a-6202c的反馈。例如,客户端设备可以将对搜索 结果的反馈提供给地图服务6230和/或一个或多个其他服务6250 (例如指定评级、评论、 临时或永久关闭、错误等的反馈);这个反馈可用于更新关于兴趣点的信息,以便未来提供 更精确或更切合当时情况的搜索结果。在一些实施例中,地图服务6230和/或一个或多个 其他服务6250可以提供测试信息给客户端设备(例如A/B测试)以确定哪些搜索结果最 佳。例如,以随机间隔,客户端设备可以接收并呈现两个搜索结果给用户,并且允许用户指 定最佳结果。客户端设备可以将测试结果报告给地图服务6230和/或一个或多个其他服 务6250以基于所选测试技术改善未来搜索结果,测试技术诸如是A/B测试技术,其中将基 线对照样本与多个单变量测试样本进行比较以便改善结果。
[0558] 虽然已参考许多特定细节描述了本发明,但本领域的普通技术人员将认识到,可 在不脱离本发明的实质的情况下以其他特定形式来体现本发明。例如,许多图例示各种触 摸手势(例如,轻击、双击、横扫手势、按下并保持手势等)。然而,所例示操作中的许多操作 可经由不同触摸手势(例如,横扫而非轻击等)或由非触摸输入(例如,使用光标控制器、 键盘、触摸板/触控板、近触感屏等)来执行。此外,多个附图概念性地例示了过程。这些 过程的特定操作可不以所示出和描述的确切顺序被执行。可不在操作的一个连续系列中执 行该特定操作,并且可在不同实施例中执行不同的特定操作。此外,该过程可使用若干子过 程来实施,或者作为更大宏过程而实施。
【权利要求】
1. 一种存储供设备的至少一个处理单元执行的导航程序的机器可读介质,所述程序包 括用于以下操作的指令集: 标识所述设备的位置; 标识与所标识的所述设备的位置相关联的道路标志的样式; 生成匹配所标识的样式的道路标志的形式的导航指令。
2. 根据权利要求1所述的机器可读介质,其中用于生成导航指令的指令集包括用于以 下操作的指令集: 标识用于所标识的样式的道路标志模板图像; 对于多个导航指令中的每一者,将所标识的道路标志模板与文本指令和图形指令中的 至少一者合成以生成复合道路标志指令。
3. 根据权利要求2所述的机器可读介质,其中用于合成的指令集包括用于生成复合 纹理图像的指令集,所述复合纹理图像具有与所标识位置处的道路标志相关联的纹理和外 貌。
4. 根据权利要求2所述的机器可读介质,其中所述文本指令指定沿所导航路线的交叉 点处的操控,而所述图形指令包括图示说明所述交叉点处的所述操控的方向指示器。
5. 根据权利要求1所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 呈现具有第一外观的特定道路标志一段时间; 在所述一段时间之后修改所述特定道路标志的外观以吸引对所述道路标志的注意。
6. 根据权利要求5所述的机器可读介质,其中用于修改所述道路标志的外观的指令集 包括用于在返回呈现具有所述第一外观的所述特定道路标志之前修改所述特定道路标志 的外观另一段时间的指令集。
7. 根据权利要求5所述的机器可读介质,其中用于修改所述特定道路标志的外观的指 令集包括用于生成使所述特定道路标志部分或全部发光的照明效果的指令集。
8. 根据权利要求7所述的机器可读介质,其中用于生成所述照明效果的指令集包括用 于投射横穿所述特定道路标志的光的指令集。
9. 根据权利要求7所述的机器可读介质,其中所述照明效果照亮所述特定道路标志的 一系列邻接区段,以便生成光源横贯所述特定道路标志的效果。
10. -种存储供设备的至少一个处理单元执行的导航程序的机器可读介质,所述程序 包括用于以下操作的指令集: 标识沿所导航路线的相互邻近的两个连续操控; 同时呈现两个道路标志以描述所述两个操控。
11. 根据权利要求10所述的机器可读介质,其中用于呈现所述两个道路标志的指令集 包括用于以下操作的指令集: 生成第一道路标志,在所述第一道路标志内放置有用于第一操控的导航指令; 生成第二道路标志,在所述第二道路标志内放置有用于第二操控的导航指令; 同时呈现所述第一道路标志和第二道路标志。
12. 根据权利要求11所述的机器可读介质,其中每个导航指令包括文本指令和图形指 令中的至少一者。
13. 根据权利要求11所述的机器可读介质,其中所述第二道路标志小于所述第一道路 物^志。
14. 根据权利要求13所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 在所述设备经过了与所述第一道路标志相关联的导航操控之后移除所述第一道路标 志; 用描述所述第二操控的更大的第三道路标志替代所述第二道路标志。
15. -种生成导航呈现的方法,所述方法包括: 标识设备的位置; 标识与所标识的所述设备的位置相关联的道路标志的样式;以及 生成匹配所标识的样式的道路标志的形式的导航指令。
16. 根据权利要求15所述的方法,其中生成导航指令包括: 标识用于所标识的样式的道路标志模板图像; 对于多个导航指令中的每一者,将所标识的道路标志模板与文本指令和图形指令中的 至少一者合成以生成复合道路标志指令。
17. 根据权利要求16所述的方法,其中合成包括生成具有与所标识位置处的道路标志 相关联的纹理和外貌的复合纹理图像。
18. 根据权利要求15所述的方法,还包括: 呈现具有第一外观的特定道路标志一段时间;以及 在所述一段时间之后修改所述特定道路标志的外观以吸引对所述道路标志的注意。
19. 根据权利要求15所述的方法,其中修改所述道路标志的外观包括在返回呈现具有 所述第一外观的所述特定道路标志之前修改所述特定道路标志的外观另一段时间。
20. 根据权利要求15所述的方法,其中修改所述特定道路标志的外观包括生成使所述 特定道路标志部分或全部发光的照明效果。
21. -种存储供设备的至少一个处理单元执行的导航程序的机器可读介质,所述设备 包括触敏屏幕和触摸输入界面,所述程序包括用于以下操作的指令集: 生成并显示二维(2D)导航呈现; 生成并显示三维(3D)导航呈现;以及 显示用于从所述2D导航呈现转换到所述3D呈现的3D控件。
22. 根据权利要求21所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 接收对所述3D控件的选择;以及 响应于所述选择,指示所述程序从所述2D呈现切换到所述3D呈现。
23. 根据权利要求21所述的机器可读介质,其中所述设备包括触敏屏幕和触摸输入界 面,所述程序还包括用于以下操作的指令集: 从所述触摸输入界面接收用于选择所述3D控件的第一触摸输入; 从所述触摸输入界面接收第二触摸输入; 确定所述第二触摸输入是用于从所述2D呈现转换到所述3D呈现的多点触摸手势输 入;以及 响应于所述第一触摸输入或第二触摸输入,指示所述程序从所述2D呈现切换到所述 3D呈现。
24. 根据权利要求21所述的机器可读介质,其中所述设备包括触敏屏幕和触摸输入界 面,所述程序还包括用于以下操作的指令集: 从所述触摸输入界面接收触摸输入; 确定所述触摸输入是用于从所述2D呈现转换到所述3D呈现的多点触摸手势输入;以 及 响应于所述第一触摸输入或第二触摸输入,指示所述程序从所述2D呈现切换到所述 3D呈现。
25. 根据权利要求24所述的机器可读介质, 其中所述第二多点触摸输入是在特定方向上的多点触摸拖动操作, 其中所述多点触摸拖动操作包括沿所述屏幕在所述特定方向上或在所述特定方向的 阈值内被拖动的至少两个不同的触摸触点。
26. 根据权利要求25所述的机器可读介质,其中所述特定方向是沿地图的坚直轴线的 向上方向,并且所述多点触摸拖动操作是两个手指拖动操作。
27. 根据权利要求24所述的机器可读介质, 其中所述导航呈现中的至少一者将所追踪的所述设备的当前位置显示在所述呈现内 的特定位置处, 其中所述导航呈现在围绕所述设备的区域的地图中显示所追踪的所述设备的当前位 置, 其中所述程序还包括用于以下操作的指令集: 在所述导航呈现期间通过所述多点触摸输入界面接收第三触摸输入; 确定所述第三触摸输入是用于改变在所述导航呈现期间呈现的视图的手势输入;以及 响应于所述第三触摸输入,通过改变所述设备的当前位置在所述导航呈现中的位置以 便显示所述地图的先前在所述导航呈现期间未呈现的部分来改变所述导航呈现。
28. 根据权利要求27所述的机器可读介质,其中所述程序还包括用于在一段时间之后 将在所述导航呈现中所显示的所述设备的当前位置返回到其在响应于所述第三触摸输入 进行的所述改变之前在所述呈现中的原始位置的指令集。
29. 根据权利要求28所述的机器可读介质,其中所述第三触摸输入是单点触摸拖动操 作。
30. 根据权利要求21所述的机器可读介质,其中用于显示所述3D控件的指令集包括用 于以下操作的指令集: 在显示所述2D导航呈现时显示具有第一外观的所述3D控件; 在显示所述3D导航呈现时显示具有第二外观的所述3D控件。
31. 根据权利要求30所述的机器可读介质,其中用于显示所述3D控件的指令集还包括 用于在数据不可用于呈现所述3D导航呈现时显示具有第三外观的所述3D控件的指令集。
32. 根据权利要求21所述的机器可读介质,其中用于生成所述3D导航呈现的指令集 包括用于由围绕所述设备的当前位置的地图中区域的3D地图场景的特定透视图来渲染3D 呈现的指令集。
33. 根据权利要求32所述的机器可读介质,其中所述3D地图场景包括所述地图中的构 建体,所述构建体包括道路和建筑物。
34. 根据权利要求32所述的机器可读介质,其中用于渲染的指令集包括用于以下操作 的指令集: 定义虚拟相机以表示所述特定透视图;以及 响应于所接收的触摸输入来移动所述虚拟相机,以便改变用于渲染所述3D地图场景 的透视图。
35. 根据权利要求21所述的机器可读介质,其中所述程序还包括用于在提供所述导航 呈现中的一者期间追踪所述设备的位置的指令集,其中所述导航呈现将所追踪的所述设备 的当前位置显示在所述呈现内的特定位置处,其中所述导航呈现在围绕所述设备的区域的 地图中显示所追踪的所述设备的当前位置。
36. 根据权利要求35所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 使所追踪的位置与沿所导航路线的导航指引相关; 在基于所追踪的所述设备的位置检测到所述设备不再在所导航路线上时,生成新的一 组导航指引;以及 在描述新的所导航路线的导航呈现期间提供所述新的一组导航指引。
37. 根据权利要求36所述的机器可读介质,其中用于追踪所述设备的位置的指令集包 括用于使用由所述设备的全球定位系统(GPS)接收器生成的GPS数据来标识所述设备的位 置的指令集。
38. 根据权利要求35所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 在所述程序正在显示3D导航呈现期间检测到所述设备正到达交叉口;以及 从所述3D导航呈现切换到所述2D导航呈现,以提供沿所导航路线的所述交叉口的更 好视图。
39. 根据权利要求38所述的机器可读介质,其中所述程序还包括用于以下操作的指令 集: 在切换到所述2D导航呈现之后检测到所述设备已经经过了所述交叉口;以及 从所述2D导航呈现切换到所述3D导航呈现以恢复所述3D呈现。
40. -种在具有触敏屏幕和触摸输入界面的设备上提供导航指令的方法,所述方法包 括: 生成并显示地图的二维(2D)呈现; 从所述触摸输入界面接收触摸输入; 确定所述触摸输入是用于从所述2D呈现转换到三维(3D)呈现的多点触摸手势输入; 以及 响应于所述触摸输入,生成并显示所述地图的3D呈现。
41. 一种包括至少一个处理单元的设备,所述设备存储供所述至少一个处理单元执行 的导航程序,所述程序包括用户界面(UI),所述n包括: 用于显示二维(2D)导航呈现或三维(3D)导航呈现的显示区域;和 用于指示所述程序在所述2D呈现和3D呈现之间转换的能够选择的3D控件。
42. 根据权利要求41所述的设备,其中所述3D控件在显示所述2D导航呈现时具有第 一外观,并且在显示所述3D导航呈现时具有第二外观。
43. 根据权利要求41所述的设备, 其中所述屏幕是触敏屏幕, 其中所述设备包括屏幕和用于通过所述屏幕接收多点触摸手势输入的多点触摸界面, 其中所述n还包括手势处理模块,其用于从所述多点触摸界面接收手势输入并且将 第一类型的手势输入转化为指示所述程序在所述2D呈现和3D呈现之间切换的指令。
44. 根据权利要求43所述的设备,其中所述第一类型的手势输入是在特定方向上的拖 动操作。
45. 根据权利要求43所述的设备,其中每个第一类型的手势输入都包括沿所述屏幕在 所述特定方向上或在所述特定方向的阈值内拖动的至少两个不同的触摸触点。
46. -种供设备的至少一个处理单元执行的导航应用程序,所述应用程序包括: 用于接收描述沿从第一位置到第二位置的路线的交叉点的数据的接口,其中每个交叉 点的所述数据包括道路离开所述交叉点的一组角度; 交叉点简化器,其用于为所接收的交叉点简化所述角度; 箭头生成器,其用于生成所简化的交叉点的至少两个不同表示,所述表示用于在显示 描述在所述路线期间在所述交叉点处执行的操控的导航信息时使用;和 箭头选择器,其用于根据所述表示将在其中被显示的上下文来选择所简化的交叉点的 所述不同表示中的一者用于显示。
47. 根据权利要求46所述的导航应用程序,还包括上下文分析器,所述上下文分析器 用于确定所述表示将在其中被显示的上下文。
48. 根据权利要求46所述的导航应用程序,还包括标志生成器,所述标志生成器用于 将所选择的箭头结合到用于显示给所述导航应用程序的用户的标志中。
49. 根据权利要求48所述的导航应用程序,其中所述标志除了所选择的箭头之外还包 括用于所述操控的文本指令,其中所述文本指令基于所述指令将在其中被显示的上下文。
50. 根据权利要求48所述的导航应用程序,其中所述标志被设计为看起来类似于道路 物^志。
51. 根据权利要求48所述的导航应用程序,其中所述标志覆盖所述路线的动画显示的 地图进行显示。
52. 根据权利要求46所述的导航应用程序,其中每个交叉点的所述交叉点数据包括将 离开所述交叉点的所述道路中的一者标记为用于在所述交叉点处执行的操控的出口分支 的标签。
53. 根据权利要求46所述的导航应用程序,其中所述导航应用程序是运行于手持设备 上的地图绘制和导航应用程序。
54. -种存储供至少一个处理单元执行的导航应用程序的机器可读介质,所述导航应 用程序包括用于以下操作的指令集: 对于从地图上的第一位置到所述地图上的第二位置的路线,接收描述沿所述路线的在 那里需要操控的交叉点的交叉点数据,其中用于特定交叉点的所述交叉点数据包括道路离 开所述交叉点的一组角度,其中所述角度中的一者被标记为用于在所述特定交叉点处执行 的操控的出口道路; 通过将所述角度折合到一组轴线来自动地简化用于所述特定交叉点的所述角度;以及 利用所简化的角度生成用于在所述特定交叉点处执行的操控的导航箭头。
55. 根据权利要求54所述的机器可读介质,其中所述轴线包括位于45°的倍数处的八 个可能折合点。
56. 根据权利要求55所述的机器可读介质,其中位于0°的轴线表示继续直行通过所 述交叉点的操控。
57. 根据权利要求54所述的机器可读介质,其中用于自动地简化所述角度的指令集包 括用于阻止多个角度折合到同一轴线的指令集。
58. 根据权利要求54所述的机器可读介质,其中用于自动地简化所述角度的指令集包 括用于阻止被标记为用于所述操控的出口道路的角度折合到与所述操控不兼容的轴线的 指令集。
59. 根据权利要求58所述的机器可读介质,其中用于生成导航箭头的指令集包括用于 在所述出口道路否则会折合到与所述操控不兼容的轴线时使用用于所述操控的默认导航 箭头的指令集。
60. -种供设备的至少一个处理单元执行的导航应用程序,所述应用程序包括: 用于接收描述沿从地图上的第一位置到所述地图上的第二位置的路线的交叉点的数 据的接口,其中每个交叉点的所述数据包括道路离开所述交叉点的一组角度; 交叉点解码器,其用于由所述交叉点数据为每个交叉点合成描述要在所述交叉点处执 行的操控的不同方面的指令元素; 指令生成器,其用于通过为在那里要执行操控的交叉点组合所述指令元素中的一个或 多个来为所述操控生成至少两个不同指令集;和 指令检索器,其用于根据所述指令集将在其中被显示的上下文为所述操控选择所述不 冋指令集中的一者。
61. 根据权利要求60所述的导航应用程序,还包括上下文分析器,所述上下文分析器 用于确定所述指令集将在其中被显示的上下文。
62. 根据权利要求60所述的导航应用程序,还包括标志生成器,所述标志生成器用于 将所选择的指令集结合到用于显示给所述导航应用程序的用户的标志中。
63. 根据权利要求62所述的导航应用程序,其中所述标志除了所选择的指令集之外还 包括所述操控的图形指示,其中所述图形指示基于所述标志将在其中被显示的上下文。
64. 根据权利要求62所述的导航应用程序,其中所述标志被设计为看起来类似于道路 物^志。
65. 根据权利要求62所述的导航应用程序,其中所述标志覆盖所述路线的动画显示的 地图进行显示。
66. 根据权利要求60所述的导航应用程序,其中所述导航应用程序是运行于手持设备 上的地图绘制和导航应用程序。
67. 根据权利要求60所述的导航应用程序,其中特定交叉点的所述指令元素基于用于 所述特定交叉点的所述交叉点数据并且。
68.根据权利要求60所述的导航应用程序,其中所述指令生成器还用于根据所述不同 指令集关于所述操控传递的信息量来对所生成的用于特定操控的指令集划分等级。
【文档编号】G01C21/26GK104335008SQ201380028724
【公开日】2015年2月4日 申请日期:2013年5月21日 优先权日:2012年6月5日
【发明者】M·范奥斯, C·布鲁门伯格, E·沃尔卡诺, B·A·摩尔, S·K·皮拉潘 申请人:苹果公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1