Если вы пытаетесь увеличить конкретный оверлей, вы можете:
let insets = UIEdgeInsets(top: 50, left: 50, bottom: 50, right: 50)
func zoom(for overlay: MKOverlay) {
mapView.setVisibleMapRect(overlay.boundingMapRect, edgePadding: insets, animated: true)
}
Если вы хотите увеличитькарту, чтобы показать все наложения, вы можете сделать:
func zoomForAllOverlays() {
guard let initial = mapView.overlays.first?.boundingMapRect else { return }
let mapRect = mapView.overlays
.dropFirst()
.reduce(initial) { $0.union($1.boundingMapRect) }
mapView.setVisibleMapRect(mapRect, edgePadding: insets, animated: true)
}
Например, добавив два наложения (над Нью-Йорком и Стэмфордом), я вызвал эту процедуру, и это привело к:
Кстати, я знаю, что вопрос был о Polygon
оверлеях, но техника работает независимо от типа оверлея. Просто было проще создать Circle
оверлеи для демонстрационных целей.