2010-06-14 105 views
2

我需要知道regionWillChangeAnimated是否由於縮放或平移而發生。MKMapView regionWillChangeAnimated縮放還是平移?

我能夠通過跟蹤舊區域跨度並與新區域進行比較來查看regionDidChangeAnimated是否能夠確定是否出現縮放。

regionWillChangeAnimated的問題在於它在區域更改之前調用,所以我無法知道該區域跨越的範圍。

有沒有另外一種方法來解決這個問題?

謝謝。

回答

1

您必須將地圖的當前範圍與mapView:regionWillChangeAnimated:中的前一個進行比較,該範圍會在縮放或滾動過程中多次調用。

可以使用代碼從breadcrumb sample projectMKZoomScale currentZoomScale = (CGFloat)(map.bounds.size.width/map.visibleMapRect.size.width);

1

我相信你需要獲取regionWillChangeAnimated調用中的當前區域範圍和中心數據,並在進行regionDidChangeAnimated調用後進行比較,但不要在那裏做太多的邏輯或它可能會導致用戶交互波動。

+1

是的問題是我需要知道縮放是否發生*而地圖正在放大,而不是*放大後*所以我不能依靠regionDidChangeAnimated。 – nebs 2010-06-21 14:58:40

0

我沒有信譽配額發表評論,但認爲有必要反正警告:你不能使用地圖的只是區域跨度確定如果發生變焦。對於恆定縮放級別,地圖的水平比例根據緯度而變化。