如何在iOS中计算地理边界框



我想在iOS中进行地理边界框计算。它可以是质子。

输入参数:

当前位置(示例:41.145495,−73.994901)

半径(米):(示例:2000)

所需输出:

MinLong:(示例:41.9995495)

MinLat:(示例:−74.004901)

MaxLong:(示例:41.0005495)

MaxLat:(示例:−73.004901)

要求:无网络呼叫

有什么想法吗?Mapkit/CoreLocation似乎不提供这种类型的东西?

还有其他我可以使用的地理SDK吗?

感谢

我认为你可以使用标准的MapKit函数:MKCoordinateRegionMakeWithDistance,这将返回一个MKCoordiniteRegion,它实际上只是一个中心点(lat,lon)和以度为单位的横向和纵向跨度。将纬度和经度分别加上/减去跨度的一半,就得到了您想要的值。

CLLocationCoordinate2D centerCoord = CLLocationCoordinate2DMake(41.145495, −73.994901);
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(centerCoord, 2000, 2000);
double latMin = region.center.latitude - .5 * startRegion.span.latitudeDelta;
double latMax = region.center.latitude + .5 * startRegion.span.latitudeDelta;
double lonMin = region.center.longitude - .5 * startRegion.span.longitudeDelta;
double lonMax = region.center.longitude + .5 * startRegion.span.longitudeDelta;

顺便说一句:这只代表几公里左右的小跨度的经度。引用苹果:

latitudeDelta
用于跨度的南北距离(以度为单位)。与纵向距离不同,纵向距离因纬度而异,一度的纬度始终约为111公里(69英里)。

纵向delta
用于跨度的东西距离(以度为单位)。经度范围所跨越的公里数根据当前的纬度而变化。例如,在赤道处,一度经度的跨度约为111公里(69英里),但在两极则缩小到0公里。

我知道我参加聚会有点晚了,但我刚刚创建了一个可能(也可能)没有帮助的类GTBoundingBox

https://github.com/wpearse/ios-geotools

最新更新