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 Google Map如何检查用户是不是在标记矩形区域
Android Google Map如何检查gps位置是否在圈内