iOS中Google当前位置的准确性

5
我正在使用Google地点API来获取当前位置的正确信息。我在应用程序中使用了此代码并成功获取了所有附近位置的列表,但是如何从列表中识别出我的确切当前位置呢?
我阅读文档并发现我们可以根据可能性(值介于0到1之间)从列表中获取当前位置。
一个更高的可能性值意味着该位置是最佳匹配的概率更大。
但是我的当前位置出现在这个列表中,但可能性值并不高。
因此我有两个问题:
1)我如何确认我的确切当前位置?是否有其他设置或任何警报网络可用?(不使用位置选择器) 2)如果我离开当前位置,我想执行一些操作,那么我如何得知我最近离开了这个位置?例如签入/签出?

你收到了什么似然值? - KENdi
@KENdi - 我收到了一个数值列表,这些数值在0到1之间,但最大的值不是当前位置。那么我该如何获得准确的可能性值? - iPatel
1个回答

4

谷歌的API要求您初始化CLLocationManager。既然您已经有了位置管理器,那么您可以将您的类设置为CLLocationManagerDelegate。这为您提供了原生iOS方法,这意味着您可以获得精确的位置和位置更改通知。

获取精确位置的方法如下:

[self.locationManager requestLocation]; //Get the current location once (iOS 9 and above)

监控位置:

[self.locationManager startUpdatingLocation] // Ask for the current location until you call stopUpdatingLocation
// or
[self.locationManager startMonitoringSignificantLocationChanges] // Tells you when your location has greatly changed

接下来,您需要遵循协议,该协议至少有两种方法:

- (void)locationManager:(CLLocationManager *)manager
 didUpdateLocations:(NSArray<CLLocation *> *)locations
// Do anything that you need to do once you have a location update

- (void)locationManager:(CLLocationManager *)manager
   didFailWithError:(NSError *)error
// Your location update failed, handle it

这并不能帮到我,因为CLLocationManager无法提供我当前位置的准确信息,例如地名、完整地址、评级等。 - iPatel
你可以将iOS返回的位置信息传递给Google,以获取有关该位置的信息(称为反向地理编码)。iOS位置将提供给您纬度和经度,您可以将其提供给https://maps.googleapis.com/maps/api/geocode/json?latlng=xx.xxxxxx,-yy.yyyyyy&key=YOUR_API_KEY。这是一个链接,可以了解更多信息:https://developers.google.com/maps/documentation/geocoding/start。否则,最大可能性是您的最佳选择。 - Jason
这不会给我准确的位置信息,就像谷歌地点通过列出准确信息一样,问题仅在于可能性是错误的,因此我无法获得正确的位置信息。 - iPatel
“准确的位置信息”是什么意思?我不明白你需要什么,因为这将提供设备的精确纬度和经度坐标,然后您可以将其传递给Google API以获取商业信息,例如名称、地址等。 - Jason
你获取的坐标并不是100%准确的 - 存在误差范围。目前所描述的API和建议的解决方案都没有考虑这一点。为了解决这个问题,您需要知道GPS的精度,并基于它计算一系列位置。最终,如果精度不够好,你真的无法确定自己的确切位置。我的建议是进行多次测量,然后根据结果计算出平均位置。 - Flame_Phoenix

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接