2010-06-14 101 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

我没有信誉配额发表评论,但认为有必要反正警告:你不能使用地图的只是区域跨度确定如果发生变焦。对于恒定缩放级别,地图的水平比例根据纬度而变化。