地图应用一般有两种:
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会停止发送。如果您居住在谷歌卫星照片具有高分辨率的地区,您可以尝试从谷歌地球卫星照片中提取位置。(但是这可能违反该卫星照片提供商的许可条件(主题:派生数据))
最后,您现在有了 Lat Lon 坐标系中的边列表。
对于显示,我个人会使用 1) OpenGL) 或 2) Quartz2D。
现在是路径查找部分。
可能您需要第二张“地图”来定义建筑物内的可能路径。此结构必须是连接图(具有连接邻居的点)。电脑游戏就是这样做的。(有些甚至允许您在开发者模式下显示该路径)
可以在平面图的不同层中绘制路径。但这条路有更高的要求:不允许有缝隙,都必须完美连接。
将该层称为“路径”并将其导出为自己的计划。
现在只使用这个路径层,导入并创建一个具有连接邻居的节点图。
使用 Dijkstra 算法搜索最短路径。