7

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

输入参数:

当前位置(例如:41.145495、-73.994901)

以米为单位的半径:(示例:2000)

所需输出:

闽龙:(例:41.9995495)

MinLat:(示例:-74.004901)

MaxLong:(例如:41.0005495)

MaxLat:(示例:-73.004901)

要求: 无网络通话

有任何想法吗?Mapkit / CoreLocation 似乎没有提供这种类型的东西?

我可以使用的任何其他地理 SDK 吗?

谢谢

4

2 回答 2

4

我认为您可以使用标准的 MapKit 函数:MKCoordinateRegionMakeWithDistance,这将返回一个MKCoordinateRegion,它实际上只是一个中心点(纬度,经度)和纬度和经度方向的跨度(以度为单位)。分别从纬度和经度添加/减去跨度的一半,您就有了您正在寻找的值。

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 英里)。

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

于 2012-09-26T17:30:14.367 回答
1

我知道我参加聚会有点晚了,但我刚刚建立了一个GTBoundingBox可能(或可能没有)帮助的课程:

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

于 2013-06-20T22:55:29.407 回答