Android 应用程序 - 检查用户的当前位置是不是等于(字符串)地址

Posted

技术标签:

【中文标题】Android 应用程序 - 检查用户的当前位置是不是等于(字符串)地址【英文标题】:Android app - Check if user's current location equal to a (String) addressAndroid 应用程序 - 检查用户的当前位置是否等于(字符串)地址 【发布时间】:2021-10-19 20:05:38 【问题描述】:

我正在开发一个 android 应用程序,我正在尝试检查用户的当前位置是否与我在 csv 中保存的一些地址之一相同。

例如: 来自 csv 的地址是一个字符串,例如“Via dei Monti Tiburtini 385, Roma 00157”

首先我通过以下代码获得了当前位置

    Geocoder geocoder;
    List<Address> addresses = null;
    geocoder = new Geocoder(MainActivity.this, locale);

    try 
        addresses = geocoder.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 
     catch (IOException e) 
        e.printStackTrace();
    

    String address = addresses.get(0).getAddressLine(0);

我想只检查字符串是否相等,但这当然不是一个正确的解决方案,因为位置地址可能因写入方式而异。

例如: csv 文件 -> “Via dei Monti Tiburtini 385, Roma 00157”

用户的当前位置 -> "Via dei Monti Tiburtini 385, Roma 00157, ITALY"

注意:我的地址不是英文字符(用户当前的 loc 和 csv loc),但现在我想至少为英文找到一个解决方案

我想在网上找到一些东西,但我找不到类似的东西。 非常感谢您的帮助,谢谢

【问题讨论】:

【参考方案1】:

检查 GPS 坐标是否相等可能过于严格,我同意你的看法。您可以做的是检查它们是否在某个范围内,可能是您数据库中的 0.01% 的余量。您可以在 Google 地图上对其进行测试,然后根据您的应用查看您认为自己可以承受的程度。

此页面有一些关于纬度和经度数值的详细信息:

https://en.wikipedia.org/wiki/Geographic_coordinate_system

从用户地址的角度来看,根据我对运输应用程序的经验,地址标准化的概念试图使地址符合格式,以便其他系统始终找到相同的位置。

这有助于人们输入地址的方式,例如“公寓 #3”或“应用 #3”或“应用 3”,这些都可能导致不同的地址。有适用于 UPS 和其他提供此功能的库。

https://www.ups.com/us/en/services/shipping/connectship.page

如果您从一个地址开始。

如果您从 GPS 位置开始,您可以使用网络上可用的 API(可能是 Google 地图)来查找特定 GPS 位置的地址。

https://www.google.com/maps/@44.4257258,-88.1063132

还有这个:

https://support.google.com/maps/answer/18539?hl=en&co=GENIE.Platform%3DDesktop

【讨论】:

以上是关于Android 应用程序 - 检查用户的当前位置是不是等于(字符串)地址的主要内容,如果未能解决你的问题,请参考以下文章

Android 融合位置更新

哪个是检查用户位置(android 应用程序)是不是在多边形内的更好方法

Android Google Map如何检查用户是不是在标记矩形区域

Android Google Map如何检查gps位置是否在圈内

在 Android 上获取用户当前位置的最简单、最可靠的方法是啥?

Android 谷歌地图使用 GPS 定位而不是网络