我看到了一些方法:
1)以编程方式使用OpenGL进行绘制。
2)以编程方式使用QuartzCore和CoreAnimation进行绘制。
3)在AutoCad中绘制地图,然后以某种方式将其连接到iOS。
4)使用SVG绘制地图。
要求支持寻路和gps导航。
对于前两种方式,我认为它在性能方面很昂贵,重新绘制缩放的所有元素;我不认为这种方式可能有GPS导航支持。
使用AutoCad图片化地图很难理解如何将其与用于寻路的图形路径相连接。
我的同事将使用SVG在网上开发此应用程序。我找到了它 - https://github.com/SVGKit/SVGKit,但仍然不知道它将如何支持寻路和导航。
我将不胜感激。
答案 0 :(得分:4)
通常有两种类型的地图应用程序:
A)他们显示地图(有或没有用户位置),而不需要像导航系统那样计算路径(见B点)
B)使用地图矢量并计算某些东西的应用程序:例如找到最佳路径。最短的连接,例如导航系统等
A)的应用通常不如B)的复杂,因为矢量可能有点不透明,没有连接,间隙小,边缘之间没有逻辑等。
1)要仅显示建筑物地图,您只需要一个边缘列表。 (边是一对坐标(x1,y1) - (x2,y2)。你怎么能得到它。例如MapInfo Professional格式mif / mid。
或者甚至你可以显示包含构建地图的pdf。右边有内置的PDF视图,(也有SVG但更难)。
如果不是相对地图,事情会变得复杂得多,而且地图也会使用参考坐标系定位,例如纬度/经度(WGS84)。
在这种情况下,您将使用工具(mapInfoProfessional,导入AutoCad DXF文件,并在房屋的角落应用3个GPS测量参考点,并将其转换为LatLong WGS84坐标系。)
使用ios你无法测量3点,因为你不能平均一个位置,当你站在房子的一个角落时,ios停止发送。
如果您居住在Google Sattelite照片具有高分辨率的区域,您可以尝试从Google地球卫星照片中提取位置。 (但这可能违反了Satellite Foto提供商的许可条件(主题:派生数据))
最后,您现在在Lat Lon坐标系中有一个边列表。
用于显示我个人会用1)OpenGL)或2)Quartz2D。
现在是路径查找部分。
Probaly你需要第二个“地图”来定义建筑物内的可能路径。
此结构必须是连接图(与连接的邻居点)。
电脑游戏就是这样做的。 (有些甚至允许您在开发者模式下显示该路径)
可以在平面图的不同层中绘制路径。但是这条道路
有更高的要求:不允许任何间隙,所有必须完美连接。
将该图层称为“路径”并将其导出为自己的计划
现在只使用此路径图层,然后导入,并创建具有连接邻居的节点图。
使用Dijkstra Algo搜索最短路径。