【问题标题】:How to calculate geography bounding box in iOS?如何在 iOS 中计算地理边界框?
【发布时间】:2012-09-10 01:12:14
【问题描述】:

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

输入参数:

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

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

所需输出:

闽龙:(例如:41.9995495)

MinLat:(示例:-74.004901)

MaxLong:(例如:41.0005495)

MaxLat:(示例:-73.004901)

要求: 无网络通话

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

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

谢谢

【问题讨论】:

    标签: ios geolocation bounding-box


    【解决方案1】:

    我认为你可以使用标准的 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;
    

    顺便说一句:这仅代表小跨度的经度,大约为几公里。致quote Apple

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

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

    【讨论】:

    • 当您的视口与 0 经度标记重叠时,这有点问题
    • 上面计算中startRegion的值是多少
    • @JamesBillingham 或 ±180 经度 ±90 纬度标记
    • startRegion 在哪里声明?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2019-02-06
      • 1970-01-01
      • 2011-04-10
      • 2015-01-20
      • 1970-01-01
      相关资源
      最近更新 更多