我要从谷歌地图转到苹果地图。谷歌地图能够根据东北和西南坐标更新相机,如下所示:
let bounds = GMSCameraUpdate.fit(GMSCoordinateBounds(northEastSouthWestBounds), with: .zero)
self.mapView.moveCamera(bounds)我知道我可以使用setVisibleMapRect(_:animated:),而且它需要一个MKMapRect。我真正的问题是如何创建基于东北坐标(a CLLocation)和西南坐标(a CLLocation)的MKMapRect。
发布于 2019-06-12 02:38:59
根据您的坐标构造一个MKMapRect,并将其传递给setVisibleMapRect(_:animated:)或setVisibleMapRect(_:edgePadding:animated:)。
要从不同点类型的数组创建MKMapRect,请执行以下操作:
import MapKit
extension Array where Element == CLLocationCoordinate2D {
func mapRect() -> MKMapRect? {
return map(MKMapPoint.init).mapRect()
}
}
extension Array where Element == CLLocation {
func mapRect() -> MKMapRect? {
return map { MKMapPoint($0.coordinate) }.mapRect()
}
}
extension Array where Element == MKMapPoint {
func mapRect() -> MKMapRect? {
guard count > 0 else { return nil }
let xs = map { $0.x }
let ys = map { $0.y }
let west = xs.min()!
let east = xs.max()!
let width = east - west
let south = ys.min()!
let north = ys.max()!
let height = north - south
return MKMapRect(x: west, y: south, width: width, height: height)
}
}https://stackoverflow.com/questions/56549632
复制相似问题