MKMapView:偏移地图以使注释可见

时间:2018-07-09 12:51:06

标签: ios swift mapkit mkmapview

我有一个MapView,底部始终可见补充视图。有时,补充视图会部分阻止所选的 MKAnnotationView 。通过编程选择注释时,有什么方法可以将地图稍微向上移动?

我现在使用的代码如下:

  mapView.selectAnnotation(selected, animated: true)
  mapView.showAnnotations([selected], animated: true)

enter image description here

1 个答案:

答案 0 :(得分:0)

我完成的代码:

    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)))
  }