我正在构建一个基于位置的应用程序,我想避免这种位置:“特拉维夫,特拉维夫,以色列”,这是非常不准确的。
在使用位置之前,我使用以下条件:
if(!(this.location == null || this.location.getAccuracy() > 700))
// use the location
但我不断得到这个位置(特拉维夫,特拉维夫,以色列),而特拉维夫还不够小,无法通过这个条件。
我错过了什么?怎么了?
我正在构建一个基于位置的应用程序,我想避免这种位置:“特拉维夫,特拉维夫,以色列”,这是非常不准确的。
在使用位置之前,我使用以下条件:
if(!(this.location == null || this.location.getAccuracy() > 700))
// use the location
但我不断得到这个位置(特拉维夫,特拉维夫,以色列),而特拉维夫还不够小,无法通过这个条件。
我错过了什么?怎么了?
您尚未指定涉及的几个参数,但我会尝试一下。
确切的Location
参数取决于那个特定的来源Location
,即它是如何获得的以及使用什么地理位置来源。例如:
Location
则将具有可靠的accuracy
值。您将从定位服务获得的准确度表示距报告位置的距离(以米为单位),在获得该位置的那一刻,设备可能处于该位置。
因此(如果我正确理解您的问题),我认为您使用的是获取当前设备位置的低准确度方法。您只需切换到Location
更准确的来源。
另请注意,位置服务使用的位置获取方法(即如上所述用于查找位置的服务)可能实际上无法提供返回的准确性Location
。要理解我的意思,请考虑以下场景及其两个结果 - 请注意,它们都来自基于 Wi-Fi 网络的相同定位方法:
您必须通过测试是否完全可用,为这种情况做好准备。您可以通过发出Location.hasAccuracy()
. 如果返回值为false
,则不能调用Location.getAccuracy()
(实际上可以调用,但要注意 - 它会返回0
!)。所以,你的情况应该更像:
if (this.location != null && this.location.hasAccuracy() && this.location.getAccuracy() < 700) {
// do something
}