首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mapkit -如何在Mapkit中获得边界坐标?

mapkit -如何在Mapkit中获得边界坐标?
EN

Stack Overflow用户
提问于 2022-07-15 00:58:14
回答 1查看 161关注 0票数 0

我试图在两个坐标范围内显示一张地图。为了证明这一点,我编写了这段代码。

代码语言:javascript
运行
复制
    private func showMapWithinBounds() {
    let point1 = MKMapPoint(viewModel.boundsStart.location.coordinate)
    let point2 = MKMapPoint(viewModel.boundsEnd.location.coordinate)

    let mapRect = MKMapRect(x: fmin(point1.x, point2.x), y: fmin(point1.y, point2.y), width: fabs(point1.x - point2.x), height: fabs(point1.y-point2.y))
    mapView.setVisibleMapRect(mapRect, animated: true)
}

如果我滚动,就会改变纬度和经度的界限。所以,当我完成滚动,我想要返回两个位置的纬度和经度,我失败了。我试过了,但找不到新的坐标。我想要所附图片中上述位置的纬度和经度。我怎么才能得到这些坐标?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-15 02:59:57

假设左上角和右下角分别是point1和point2:

方法1

使用MKMapView的转换方法将视图上的CGPoint转换为CLLocationCoordinate2D。如果您的mapView有一个非零帧,它将是:

代码语言:javascript
运行
复制
let point1 = mapView.frame.origin
let point2 = CGPoint(x: mapView.frame.maxX, y: mapView.frame.MaxY)

let point1Coord = mapView.convert(point1, toCoordinateFrom: yourReferenceView)
let point2Coord = mapView.convert(point2, toCoordinateFrom: yourReferenceView)

方法2使用mapView.region的中心和span属性

代码语言:javascript
运行
复制
let point1Coord = CLLocationCoordinate2D(latitude: mapView.region.center.latitude + mapView.region.span.latitudeDelta / 2, longitude: mapView.region.center.longitude - mapView.region.span.longitudeDelta / 2)

let point2Coord = CLLocationCoordinate2D(latitude: mapView.region.center.latitude - mapView.region.span.latitudeDelta / 2, longitude: mapView.region.center.longitude + mapView.region.span.longitudeDelta / 2)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72988030

复制
相关文章

相似问题

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