2011-01-07 28 views
13

我们正在开发一个项目,将OSM和NAVTEQ的矢量地图数据添加到iOS GPS应用程序中。将矢量地图数据添加到iOS GPS应用程序。实时矢量图形渲染

目前,该应用程序显示栅格地图图像,并提供移动地图导航功能。我们现在想通过整合矢量地图来进一步推进,但不知道从哪里开始。

来自具有GPS导航经验的开发者的指导将会很棒。

这里是关于要求简单:

目标设备: 的iOS。为了将来与其他平台的兼容性,C++是核心的首选。

数据集成和封装: 地图数据来源: - NAVTEQ - OpenStreetMap的

文件格式: - 理想与设备的局限性考虑移动设备。 - 要么找到已经建立的格式,要么在内部创建一个格式。

编译: - 确定用于源数据(SHP时,MapInfo等) 的格式 - 编译源格式所要求的格式。

地图渲染引擎: 显示地图: - 矢量地图视图将独立于目前的栅格地图视图。 - 实时渲染数据到线条,点,多边形等。平铺或预渲染是不可接受的。 - 2D birdseye视图。 (3D计划用于将来的版本)。 - 用于说明仰角的遮阳效果。 - 显示用户生成的数据,如路线,跟踪日志,航点。 - 比例尺,例如500米。 - 快速性能对提供更好的用户体验至关重要。 - 很好的例子是汤姆汤姆iOS应用程序。 地图互动: - 平移,缩放,旋转。 - 利用多点触控功能。 搜索 - 地址,地点,POI(地理编码) - 从位置地址(反向地理编码)

样式表 - 轻松自定义被显示在地图的外观。 - 每个元素都可以进行定制。

我们想知道从哪里开始我们的研究。值得花时间调查的图书馆和软件开发工具包是什么?

回答

0

试用MapBox库:http://mapbox.com/

+0

MapBox是基于磁贴是不是? – 2012-10-17 10:04:57

2

的一些注意事项根据我的经验:

源数据格式:你可能会希望能够从ESRI形状文件和OpenStreetMap的(这是作为XML数据导入或更紧凑但等效的二进制格式)。NAVTEQ数据可以作为ESRI shapefile获得。处理USGS身高数据(http://dds.cr.usgs.gov/srtm/)可以获得阴影缓解。二维与三维:从一个到另一个的步骤是一个大的步骤。二维数据几乎总是以纬度和经度的形式提供并投影到一架飞机上:Google地图和OpenStreetMap使用了一个非常简单但极为讽刺的球形墨卡托投影。移动到3D需要根据地球的形状决定坐标系 - 投影平面加高度与真实3D之间的关系 - 可能涉及细节水平的问题。一个好的方法可能是将地球的形状(丘陵和山谷)绘制成三角形网格,然后将其上的其他地图作为纹理进行绘制。您可能需要考虑“两年半的D” - 使用透视变换来显示地图,就好像从高空观看一样。

图书馆:有很多地图渲染库here,包括商业和非商业(披露:我的是其中之一)。这些库中的很多都有用于自定义地图外观的样式表系统。

一个非常好的开源渲染库(不是我的)是Mapnik,但我不确定这是否会非常容易地移植到iOS。不过,阅读Mapnik和其他渲染库如何工作以了解问题是一个非常好的主意。 OpenStreetMap wiki是了解更多关于该领域的好门户。

地图上的文字渲染几乎总是使用FreeType,这是一个具有非限制许可的开源光栅化程序库。

0

OSM Wiki有一个列表,但它是可悲的不完整。据我所知,

两个向量库CartoType(你可以在使用中看到新Lonely Planet Guides)和Skobbler - Skobbler没有一个现成的产品,但我bellieve他们将整合自己的矢量地图和路由您。

还有一个相关的问题OSM StackExchange