是否可以混合基于单个库的不同API?

时间:2016-03-24 22:56:21

标签: android routing offline android-library osmdroid

我想开发一个适用于离线地图的应用,我需要能够:

  • 地理编码
  • 两个坐标之间的路线
  • 计算两个坐标之间的距离
  • 使用自动填充功能搜索地点

所以这些都是非常困难的任务,因为它们都必须离线工作。我发现很多Apis,比如MapsMe或MapsForge,都说它们是基于osm库的。那么这是否意味着我应该能够“混合”这些api并使它们在单个地图上工作? 例如:在同一地图上使用MapsMe的漂亮地图和MapsForge的路由系统

谢谢

1 个答案:

答案 0 :(得分:0)

一切皆有可能。

尽管如此,他们都可以使用相同的source数据(开放街道地图),但osmdroid和mapsforge会以不同的方式对它们进行预处理。 Osmdroid通常只通过服务器或使用mapsforge预渲染图块displays。 Osm Bonus Pack使用在线资源(仅限在线资源)添加路由。

Mapsforge将osm数据预处理为中间数据库格式。然后根据需要在设备上呈现平铺。据我所知,POI信息需要另一个单独的数据库。我检查的最后一个,他们没有任何路由功能,但正在努力将POI信息转换为他们的中间数据库格式。与此相关的最佳信息是mapsforge github网站。

计算两点之间的直线距离是微不足道的,不需要任何地图引擎。这只是数学。只要您有一组点,沿着路线的距离也是直线图。不要忘记地球曲率中的因素。

地理编码,将纬度/经度转换为近似或精确的地址并再次返回可以使用osm数据完成,但我不知道任何可以离线执行此操作的整个行星。

您还必须考虑地理区域。 osm数据巨大,对于行星来说,压缩了大约40gb。显然,您需要以某种方式对数据进行子集化。