Android 使用存储的地图查找最近的医院

Android 使用存储的地图查找最近的医院,android,gps,maps,offline,Android,Gps,Maps,Offline,我正在尝试开发一个android程序,它可以在不使用互联网的情况下找到最近医院的位置。相反,我希望它使用android设备上存储的地图。这是否可行?如果是的话,有人能告诉我代码吗 我成功开发了一个使用谷歌API的类似程序,这意味着它将联系服务器并使用互联网。我在link中重用了源代码 但在某些情况下,我的用户可能无法访问互联网,因此急需找到最近的医院。我如何解决这个问题 这绝对有可能。 您需要使用离线地图数据-您可以从OpenStreetMap项目获取地图数据。我建议让用户在初次安装应用程序后选

我正在尝试开发一个android程序,它可以在不使用互联网的情况下找到最近医院的位置。相反,我希望它使用android设备上存储的地图。这是否可行?如果是的话,有人能告诉我代码吗

我成功开发了一个使用谷歌API的类似程序,这意味着它将联系服务器并使用互联网。我在link中重用了源代码

但在某些情况下,我的用户可能无法访问互联网,因此急需找到最近的医院。我如何解决这个问题

这绝对有可能。 您需要使用离线地图数据-您可以从OpenStreetMap项目获取地图数据。我建议让用户在初次安装应用程序后选择下载哪些区域,然后数据将始终可用

稍后,位置API的使用不需要internet连接。你会得到坐标,用它你可以计算到其他坐标的距离


显然,您面临的挑战是创建医院位置的硬编码列表(尽管可以更新,但确保应用程序可以在有互联网的情况下下载新列表,例如下载XML文件)。

另一个更简单的解决方案是将每个医院的坐标存储在一个文件中。 在应用程序启动时,在中读取文件

可能的文件格式:

Hospital Name, latitude, longitude, Adress Optional
然后使用CLLocation distanceTo()简单计算到所有医院的视线距离。然后按距离排序

走最短的。
虽然这不是公路距离,但只要在OpenStreetMap中没有河流或铁路,它就可以工作。

在OpenStreetMap中,我能够访问完整的数据库文件(31 GB)。我现在只需要为我的国家准备一份文件。你能给我提供任何链接吗?我需要每个医院的经度、纬度和附近地区。手动存储您提到的信息是我唯一剩下的选择。在线数据库包括所有的地方,而且文件大得惊人。这会导致Java在解析XML时堆内存不足。