2016-09-28 6 views
1

기본적으로 두 개의 주석을 추가하고 예상대로 표시되는지도가 있습니다.MapView는 모든 주석을 표시하고 가능한 한 많이 확대합니다.

그리고 미안 다음 코드를 사용하여 :

let annotations = [start, end] 
mapView?.showAnnotations(annotations, animated: false) 

는 그리고이 두 주석 내지도를 보여 줌,하지만지도가 훨씬 더 확대하고보다 상세한지도보기를 표시 할 수 있습니다.

This is what I get todaythis is the expected result 내가 원하는.

지도에서 알 수 있듯이지도를 더 크게 확대 할 수 있습니다.

아이디어를 얻으려면 어떻게해야합니까?

답변

1

사용이 :

extension MKMapView { 
    /// when we call this function, we have already added the annotations to the map, and just want all of them to be displayed. 
    func fitAll() { 
     var zoomRect   = MKMapRectNull; 
     for annotation in annotations { 
      let annotationPoint = MKMapPointForCoordinate(annotation.coordinate) 
      let pointRect  = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.01, 0.01); 
      zoomRect   = MKMapRectUnion(zoomRect, pointRect); 
     } 
     setVisibleMapRect(zoomRect, edgePadding: UIEdgeInsetsMake(100, 100, 100, 100), animated: true) 
    } 

    /// we call this function and give it the annotations we want added to the map. we display the annotations if necessary 
    func fitAll(in annotations: [MKAnnotation], andShow show: Bool) { 
     var zoomRect:MKMapRect = MKMapRectNull 

     for annotation in annotations { 
      let aPoint   = MKMapPointForCoordinate(annotation.coordinate) 
      let rect   = MKMapRectMake(aPoint.x, aPoint.y, 0.1, 0.1) 

      if MKMapRectIsNull(zoomRect) { 
       zoomRect = rect 
      } else { 
       zoomRect = MKMapRectUnion(zoomRect, rect) 
      } 
     } 
     if(show) { 
      addAnnotations(annotations) 
     } 
     setVisibleMapRect(zoomRect, edgePadding: UIEdgeInsets(top: 100, left: 100, bottom: 100, right: 100), animated: true) 
    } 

} 

다음, map 예를 들어,지도보기위한 출구를 생성 한 후 당신 주석과 두 배열에 annotations라고의지도에 추가, 같은 위의 방법에 액세스 그래서 :

map.fitAll() 

또는

map.fitAll(in:annotations, true) 

입니다.

사용 사실 또는 이전 여부를지도에 주석을 추가 한 여부에 따라 마지막 문에서 거짓 ... 스위프트에서

1

: 이것은 내가 보여주기 위해 무엇을 사용

self.mapView.showAnnotations(self.mapView.annotations, animated: true) 

모든 주석. 네가하고있는 것과 거의 같다. 지도는지도의 보이는 부분이나 사용 가능한 부분에 맞게 확대/축소합니다. 내 앱에서는 확대/축소가 좋으며 가장자리에 아무 것도 접촉하지 않도록 약간의 여백을 추가합니다.

맵이 완료되면 setVisibleMapRect : edgePadding : animated : 네가티브 패딩과 함께 새로운 visibleRect를 사용하여 신속하게 사용할 수 있습니다.