2013-04-13 1 views
4
에서

을 모드를 전환 할 때 북한이 항상 중심의 아이폰 OS 6 MKMapView을 유지하는 방법.내가 <code>MKUserTrackingModeNone</code>, <code>MKUserTrackingModeFollow</code>, <code>MKUserTrackingModeFollowWithHeading</code>이 작동을 사용하여 세 가지 다른 <code>map</code> 방향 모드 사이를 전환하고 MKUserTrackingModeFollowWithHeading

MKUserTrackingModeFollowWithHeading에서 MKUserTrackingModeNone으로 전환 할 때 북쪽 방향 (지도의 북쪽이 화면 상단에 있음)으로 재설정되지 않는지도 방향에 문제가 있습니다. iphone/ipad에 내장 된지도 애플리케이션에

이 흐름은 다음과 같이이다 :

당신은 모드 MKUserTrackingModeNone에 북쪽 지향 당신이로 변경 방향 모드를 전환 할 때 인 응용 프로그램을 시작할 때 MKUserTrackingModeFollow이고 방향은 여전히 ​​북쪽입니다.

다시 전환하면 MKUserTrackingModeFollowWithHeading으로 바뀌고지도는 사용자가 향하는 방향/iPhone을 가리키는 방향으로 회전합니다.

오리 엔테이션을 다시 전환하면 MKUserTrackingModeNone으로 돌아가고지도가 북쪽으로 향하게됩니다.

모드를 전환 할 때 방향과 관련하여 앱이 동일한 방식으로 동작하기를 원하지만 위의 4 단계에서 수행 한 후 MKUserTrackingModeFollowWithHeading에서 MKUserTrackingModeNone으로 전환하면 방향이 그대로 유지됩니다. 스위치를 다시 북쪽 방향으로 회전하지 마십시오.

표준 MKUserTrackingBarButtonItem 컨트롤을 도구 모음에 배치 한 방향 스위치를 만듭니다.

누구든지이 문제를 해결할 수 있도록 도와주세요.

+0

죄송합니다. 내 앱에서 내 앱에서 원하는 것을 수행하고 동일한 표준 버튼 이외의 작업을 수행하지 않았다는 것을 제외하고는 도움을 줄 수 없습니다./ – Craig

+1

내 경험과 함께 사용했거나 도움이되지 않을 수 있습니다. iOS 5 -지도 및 'MKUserTrackingBarButtonItem'의 기본 제공 기능이 오리엔테이션 모드를 처리하도록합니다. 지도에 방향 모드를 설정하려고하는 코드가 없는지 확인하십시오. – Jesse

+0

오리엔테이션 모드를 설정하지 않습니다. 우리가 맵을 추가 한 컨트롤러에서 supportedInterfaceOrientations를 설정할 필요가 없다는 것을 의미합니까? 또는 MKMapView에서 설정할 수있는 다른 방향 모드가 있습니까? –

답변

0

iOS 5에서는 북쪽으로 전환되지만 iOS 6에서는 전환되지 않습니다. bugreport.apple.com에서 개선 요청을 제출할 수 있습니다.

당신은

- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated 
{ 
    if (mode == MKUserTrackingModeNone) 
     [self rotateTheMapView]; 
} 

- (void)rotateTheMapView { 
    // See https://stackoverflow.com/q/1245461/1445366 
} 

가 (회전 지시 & 코드를 Rotate MapView using Compass orientation를 참조하십시오.) ... 대리자 콜백 함수를 구현하고 대리인 콜백에서 회전을 적용 할 수

문제는 애플이 '아무튼이다 내부 논리를 사용하여 정확한 현재 회전을 표시합니다. 따라서 iOS에서 제공하는 현재 제목의 계산이 약간 떨어져지도가 완료되면지도가 약간 북쪽이 될 수 있습니다.

+0

I ' MKUserTrackingBarButtonItem의 상태를 순환하면서 추적 모드를 다시 none으로 전환하면 iOS 6.1.3을 실행하는 iPhone 4S 및 iPad 3에서 내 앱을 테스트하고 모두 북쪽으로 돌아갑니다. 다른 코드는 필요하지 않습니다. – Craig

+0

흠, 문제가 iOS의 최신 버전에서 수정 되었습니까? iOS 6.1에서 테스트를 진행했습니다. –

+0

iOS 5에서도 내 장치를 사용할 때 작동했기 때문에 가능하지 않습니다. 알아내는 가장 좋은 방법은 기기를 업데이트하는 것입니다. – Craig

0

맵뷰 만있는 작은 테스트 앱과 MKUserTrackingBarButtonItem을 함께 연결해야합니다. 설명대로해야하며 한 줄의 코드는 필요하지 않습니다. 모든 연결은 IB에서 수행 할 수 있습니다. 작업 내용을 확인하면 코드로 돌아가서 프로세스를 반복 할 수 있습니다.

1

iOS 6.1.4를 실행하는 iPhone 5에서도이 문제가 발생합니다.

-(void)someMethod 
{ 
    // Currently in MKUserTrackingModeFollowWithHeading mode 

    // Set tracking mode back to MKUserTrackingModeFollow 
    [_mapView setUserTrackingMode:MKUserTrackingModeFollow]; 

    // After a short delay, set mode to MKUserTrackingModeNone 
    [self performSelector:@selector(mapViewTrackingModeNone) 
       withObject:nil 
       afterDelay:0.2]; 

} 

- (void)mapViewTrackingModeNone 
{ 
    [_mapView setUserTrackingMode:MKUserTrackingModeNone]; 

    // Bang! The map rotates back to North-Up 
} 

아마이 할 수있는 더 나은 방법이 있어요,하지만 난 아직 발견되지 않은 : 나는 백업 북한 회전지도보기를 강제로이 간단하지만 추한 빠른 수정을 사용했다.