代码之家  ›  专栏  ›  技术社区  ›  Richard Topchii

mkmapview:使注释可见的偏移映射

  •  1
  • Richard Topchii  · 技术社区  · 6 年前

    我有一个地图视图,底部的补充视图一直可见。有时补充视图会部分阻止选定的 mkannotationview视图 是的。当以编程方式选择注释时,是否有任何方法将地图上移一点?

    我现在使用的代码如下:

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

    enter image description here

    1 回复  |  直到 6 年前
        1
  •  0
  •   Richard Topchii    6 年前

    我完成的代码:

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