I have a MapView with the supplementary view at the bottom visible all the time. Sometimes the supplementary view partially blocks the selected MKAnnotationView. Is there any way to move the map a bit up when the annotation is selected programmatically?
The code I'm using now as follows:
mapView.selectAnnotation(selected, animated: true)
mapView.showAnnotations([selected], animated: true)
Code I've finished with:
let coordinate = selected.coordinate
let delta = CLLocationDegrees(0.003)
let span = MKCoordinateSpan(latitudeDelta: delta, longitudeDelta: delta)
let region = MKCoordinateRegion(center: coordinate, span: span)
let rect = MKMapRectForCoordinateRegion(region: region)
// Adjust padding here
let insets = UIEdgeInsets(top: 0, left: 0, bottom: 150, right: 0)
mapView.setVisibleMapRect(rect, edgePadding: insets, animated: true)
// Convert CoordinateRegion to MapRect
func MKMapRectForCoordinateRegion(region:MKCoordinateRegion) -> MKMapRect {
let topLeft = CLLocationCoordinate2D(latitude: region.center.latitude + (region.span.latitudeDelta/2), longitude: region.center.longitude - (region.span.longitudeDelta/2))
let bottomRight = CLLocationCoordinate2D(latitude: region.center.latitude - (region.span.latitudeDelta/2), longitude: region.center.longitude + (region.span.longitudeDelta/2))
let a = MKMapPointForCoordinate(topLeft)
let b = MKMapPointForCoordinate(bottomRight)
return MKMapRect(origin: MKMapPoint(x:min(a.x,b.x), y:min(a.y,b.y)), size: MKMapSize(width: abs(a.x-b.x), height: abs(a.y-b.y)))
}