【问题标题】:Finding nearest Hospital using a stored map使用存储的地图查找最近的医院
【发布时间】:2025-12-16 23:05:02
【问题描述】:

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

我成功开发了一个使用 google API 的类似程序,这意味着它会联系服务器并使用互联网。我重用了this链接中的源代码。

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

【问题讨论】:

    标签: android gps maps offline


    【解决方案1】:

    另一个更简单的解决方案是将每家医院的坐标存储在一个文件中。 在 App 中开始读取文件。

    可能的文件格式:

    Hospital Name, latitude, longitude, Adress Optional
    

    然后使用 CLLocation distanceTo() 简单计算到所有医院的视线距离。然后按距离排序。

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

    【讨论】:

    • 手动存储您提到的信息是我唯一的选择。在线数据库包括所有地方,文件非常大。在解析 XML 时,它会导致 Java 堆内存不足。
    【解决方案2】:

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

    稍后,位置 API 的使用不需要互联网连接。你会得到坐标,你可以用它来计算到其他坐标的距离(医院..)。

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

    【讨论】:

    • 在 OpenStreetMap 中,我能够访问完整的数据库文件 (31 GB)。我现在只需要为我的国家准备一份文件。你能给我提供任何链接吗?我需要每家医院的经度、纬度和附近地区。