基本上,我正在尝试创建一个需要检测用户当前所在的美国州的应用程序。为了解决某人处于一个州(或多个州)边界的问题,我正在考虑创建一个每个州 X 英里的缓冲区(或 X 度,因为纬度/经度以度为单位)。
我真的不确定如何使用纬度/经度检测状态。我需要订阅诸如谷歌反向地理定位之类的网络服务,还是它内置在 iPhone 中?
此外,我不是 100% 确定这个“缓冲区”是否是一个好主意,但如果不是......在没有真正处于该状态的用户被告知的情况下检测状态的正确方法是什么他们不只是因为他们住在边境吗?
基本上,我正在尝试创建一个需要检测用户当前所在的美国州的应用程序。为了解决某人处于一个州(或多个州)边界的问题,我正在考虑创建一个每个州 X 英里的缓冲区(或 X 度,因为纬度/经度以度为单位)。
我真的不确定如何使用纬度/经度检测状态。我需要订阅诸如谷歌反向地理定位之类的网络服务,还是它内置在 iPhone 中?
此外,我不是 100% 确定这个“缓冲区”是否是一个好主意,但如果不是......在没有真正处于该状态的用户被告知的情况下检测状态的正确方法是什么他们不只是因为他们住在边境吗?
与州边界距离的逻辑取决于您。但是您可以根据latlng
信息轻松确定您处于哪种状态。
例如,谷歌 API。
http://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452&sensor=false
提供您可以轻松解析的位置详细信息。administrative_area_level_1
使用标记查找地址组件下的条目:
{
"long_name" : "New York",
"short_name" : "NY",
"types" : [ "administrative_area_level_1", "political" ]
},
如果您想保留原生 iOS,可以查看MKReverseGeocoder
.
Whitout 使用网络服务,您必须将州边界的坐标作为多边形获取。
然后在多边形操作中做一个点。
如果您使用 GPS 作为定位设备,其精度通常在 10m 以内。对于居住在边境附近的人来说,这应该没有问题。然而,如果边界穿过房子,这也无济于事。只需忽略该缓冲区,集中精力使其余部分正常工作。