首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用固定对角线距离计算MKCoordinateRegion

使用固定对角线距离计算MKCoordinateRegion
EN

Stack Overflow用户
提问于 2017-04-08 20:03:10
回答 1查看 294关注 0票数 0

我想计算一个对角线距离为30 as的MKCoordinateRegion,区域的比例应该与地图框架相同。我的方法看起来像这样:

代码语言:javascript
复制
    let alpha = atan(mapView.frame.width / mapView.frame.height).radiansToDegrees
    let beta = 90 - alpha

    let spanDiagonal = 30_000.0
    let spanWidth = spanDiagonal * Double(cos(beta.degreesToRadians))
    let spanHeight = sqrt(spanDiagonal * spanDiagonal + spanWidth * spanWidth)

    let region = MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, spanWidth, spanHeight)
    let tlLat = region.center.latitude + (region.span.latitudeDelta / 2.0)
    let tlLong = region.center.longitude - (region.span.longitudeDelta / 2.0)
    let brLat = region.center.latitude - (region.span.latitudeDelta / 2.0)
    let brLong = region.center.longitude + (region.span.longitudeDelta / 2.0)

    let tl = CLLocationCoordinate2D(latitude: tlLat, longitude: tlLong)
    let br = CLLocationCoordinate2D(latitude: brLat, longitude: brLong)
    print(MKMetersBetweenMapPoints(MKMapPointForCoordinate(tl), MKMapPointForCoordinate(br)))

我计算了框架的角度,然后用这个角度计算了一个三角形,底数为30000。这导致了我认为正确的跨度、高度和宽度。

我的问题是,这个区域的对角线大约大了10公里。我认为这是因为米到度的转换是错误的。

你看到我的方法有问题了吗?或者你知道更好的方法来计算一个区域,具有相同的框架比例,30公里的对角线和与地图相同的中心?

EN

回答 1

Stack Overflow用户

发布于 2017-04-08 21:33:30

我最终使用了this around库,它实现了欧几里得算法,并允许您在坐标周围扩展边界框。这正是我要找的!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43293857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档