2016-09-28 56 views
1

所以我使用了一個聚類庫來分組註釋,並且有一個小錯誤,它可以在地圖完全放大時將一些非常接近的註釋顯示爲分組。這是一個框架,我不能對它做太多的介紹直接,但我可以禁用所有分組,如果地圖完全放大。問題是我不能找出一個可靠的方法來做到這一點。iOS MapKit - 地圖完全放大時檢測?

這是我的regionDidChangeAnimated代碼,這是我想要檢查地圖是否完全放大(至不能放大的點)的理想位置。

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) { 
    NSOperationQueue().addOperationWithBlock { 
     let scale: Double = Double(self.map.bounds.size.width)/self.map.visibleMapRect.size.width 
     let annotations = self.clusteringManager?.clusteredAnnotationsWithinMapRect(self.map.visibleMapRect, withZoomScale: scale) 
     self.clusteringManager?.displayAnnotations(annotations, onMapView: self.map) 
    } 
} 

我已經試過檢查mapView.region.span財產,但我敢肯定,這將取決於屏幕大小等改變......

有什麼建議?提前致謝。

回答

1

您需要延長您的MKMapView:

class YourMapView : MKMapView { 

    // function returns current zoom level of the map 

    func getCurrentZoom() -> Double { 

     var angleCamera = self.camera.heading 
     if angleCamera > 270 { 
      angleCamera = 360 - angleCamera 
     } else if angleCamera > 90 { 
      angleCamera = fabs(angleCamera - 180) 
     } 

     let angleRad = M_PI * angleCamera/180 

     let width = Double(self.frame.size.width) 
     let height = Double(self.frame.size.height) 

     let offset : Double = 20 // offset of Windows (StatusBar) 
     let spanStraight = width * self.region.span.longitudeDelta/(width * cos(angleRad) + (height - offset) * sin(angleRad)) 
     return log2(360 * ((width/256)/spanStraight)) + 1; 
     } 

} 

現在你能夠讀出當前縮放級別從下面的委託方法:

regionDidChangeAnimated 

而且

regionWillChangeAnimated 
+0

謝謝你爲你的幫助,工作過的一種享受。 –

+0

歡迎您! – derdida