mapviewer与在导航引擎中的位置?
mapviewer提供哪些功能?
mapviewer的实现?
mapviewer的特性?难点?
mapviewer与其他引擎接口的关系:
相关要素:当前位置positioning,当前规划的道路routeguidance(当道路规划启用时),地图数据(Map)
功能: 为导航控制层或HMI提供数据,如mapdata,route,position等; 并且提供 交互的接口,如设置比例尺,旋转,滚动,显示/隐藏等功能
mapviewer可分为两部分,一部分是map render,是具体数据的渲染,包括当前位置position,route,map,data;另一部分是map,view关键信息的提取或设置,供render部分使用,可认为是map setting(这个不完全准备)层次。
mapviewer是导航引擎中一个重要上层接口。这里的mapviewer是导航引擎中提供给上层地图控制端map control 和界面HMI的接口。
其功能的灵活性和支持力度基本上决定了用户的体验和开发的灵活性。并且,一般的导航引擎的mapviewer 都有3D模式,展示各种地图数据,而经典的2D模式可以看做是3D一种特例。
这里先试着分析下view setting一部分。
在map setting层次的接口有:
获取所有可用的地图的类型、handle信息,窗口画布信息,获取所有view的信息
能打开、关闭指定的地图数据库;
设置本地字符集,单位
Transaction的概念,即同步执行多个方法,在一个transaction中,如果执行成功,则commit,如果部分执行成功,则所有的方法都需要回滚,所有数据恢复到transaction开始之前的状态。transaction一般都是非阻塞,不可中断的方式进行。
------
设置观看某地理坐标的相机位置(图形学中,显示图形的概念)
设置观看某物体时的相机位置
scrolling:3D滚动效果,此时,不断更新相机的位置,与速度(这里是动画的速度,不是行驶速度)、方向相关。关闭scrolling,即速度为0即可。
设置尺度:本质上就是设置相机位置到中心的距离。而与动画的速度相关。
设置显示风格:如map,hmi,guidance规划,hud等,及白天、夜间模式。
显示指定数据库内的所有对象
隐藏指定数据库内的所有对象
设置缓存cache的大小(这个对性能非常重要)
由以上说明可以看出,导航引擎中的mapviewer的交互接口并不直接提供 地图数据mapdata,position位置信息,或道路的详细信息,而仅仅是提取地图数据的一些关键信息,并且能够进行一些交互设置。
关于view的position,map data, route的具体信息都由 控制端上层 负责提取,并渲染。
-----------------------
map render涉及到
地图数据更新
地图数据的提供是根据NDS中tiles的概念,分层,分片进行的。
当前位置更新
规划道路的实时更新
以及更新这些数据时,当前的输入设置map setting.
(待续)
------------------------
性能测试:如
滚动:从城市的一边到另外一边
缩放:不同的比例尺
跳转:到另外一个城市
旋转