我试图在两个坐标范围内显示一张地图。为了证明这一点,我编写了这段代码。
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)
}如果我滚动,就会改变纬度和经度的界限。所以,当我完成滚动,我想要返回两个位置的纬度和经度,我失败了。我试过了,但找不到新的坐标。我想要所附图片中上述位置的纬度和经度。我怎么才能得到这些坐标?

发布于 2022-07-15 02:59:57
假设左上角和右下角分别是point1和point2:
方法1
使用MKMapView的转换方法将视图上的CGPoint转换为CLLocationCoordinate2D。如果您的mapView有一个非零帧,它将是:
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属性
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)https://stackoverflow.com/questions/72988030
复制相似问题