2010-06-14 2 views
2

확대/축소 또는 이동으로 인해 regionWillChangeAnimated가 발생했는지 여부를 알아야합니다.MKMapView regionWillChangeAnimated 확대/축소 또는 팬?

이전 지역 범위를 추적하고 새로운 것과 비교하여 줌이 발생했는지 확인하여 regionDidChangeAnimated에 대해이를 파악할 수있었습니다.

regionWillChangeAnimated의 문제는 영역이 변경되기 전에 호출되므로 영역 스팬이 무엇인지 알 수있는 방법이 없습니다.

다른 방법으로 이것을 알아낼 수 있습니까?

감사합니다.

답변

1

확대/축소 또는 스크롤하는 동안 여러 번 호출되는 mapView:regionWillChangeAnimated:에서 이전지도의 현재 범위를 비교해야합니다.

당신은 breadcrumb sample project에서 코드를 사용할 수 있습니다 : 어쨌든 경고의 필요성을 내가 의견을 명성 할당량이없는 MKZoomScale currentZoomScale = (CGFloat)(map.bounds.size.width/map.visibleMapRect.size.width);

1

regionWillChangeAnimated 호출에서 현재 영역의 범위와 가운데 데이터를 가져 와서 regionDidChangeAnimated 호출에 도착하면 비교할 필요가 있지만 너무 많은 논리를 사용하지 않으면 사용자 상호 작용이 고르지 않을 수 있습니다.

+1

그래, 문제는지도가 확대되는 동안 확대/축소 *되어 * 확대 *되지 않았는지 여부를 알 필요가있어서 regionDidChangeAnimated에 의존 할 수 없다는 것입니다. – nebs

0

하지만 느낌 : 당신이 결정하는지도의 단지 지역 범위를 사용할 수 없습니다 줌이 발생한 경우. 일정한 줌 레벨의 경우지도의 가로 크기는 위도에 따라 다릅니다.