У меня есть две точки на карте (MapKit), и теперь я хочу расположить карту так, чтобы обе точки были видны и выровнены (одна находится прямо над другой).Я могу расположить карту, используя setVisibleMapRect(rect, edgePadding: padding, animated: true)
, но я не уверен, как сделать поворот в том же вызове.
Чтобы проиллюстрировать немного дальше, когда точки на карте расположены рядом, я получаюэтот результат при первом использовании setVisibleMapRect(rect, edgePadding: padding, animated: true)
и последующем повороте путем установки mapView.camera.heading
.
Конечный результат, который мне нужен, таков:
Код, который я использую для установки прямоугольника карты:
func centerMap() {
let rect = MKMapRect(coordinates: [currentHole!.teeCoordinate, currentHole!.greenCoordinate])
let padding = UIEdgeInsets(top: 0.0, left: 0.0, bottom: 0.0, right: 0.0)
mapView.setVisibleMapRect(rect, edgePadding: padding, animated: true)
}
extension MKMapRect {
init(coordinates: [CLLocationCoordinate2D]) {
let points = coordinates.map { MKMapPoint.init($0) }
let rects = points.map { MKMapRect(origin: $0, size: MKMapSize(width: 0, height: 0)) }
self = rects.reduce(MKMapRect.null) { result, rect in
return result.union(rect)
}
}
}
Есть идеи?