2011-02-25 2 views
2

내 문제는 iPad에서만 발생합니다. 항상 렌더링되지 않은 MKMapView 부분 (오른쪽 그림)이 있습니다. 이 창을 터치하자마자 mapview가 잘 돌아 간다. 그러나 결코 올바르게 렌더링되지 않습니다. 이 문제는 시뮬레이터 및 장치의 iOS 4.2뿐만 아니라 iOS 4.2에서도 발생합니다. MKMapView를 구성 코드는 바로 다음과 같습니다 :iPad의 MKMapView 렌더링 문제

- (void)viewDidLoad { 
     [super viewDidLoad]; 
     mapview = [[[MKMapView alloc] initWithFrame:CGRectMake(0,0,self.view.frame.size.width,230)] autorelease]; // because of apples bug 
     mapview.autoresizingMask = UIViewAutoresizingFlexibleWidth; 
     MKCoordinateSpan globe = MKCoordinateSpanMake(100, 100); 

     CLLocationCoordinate2D worldCenter; worldCenter.latitude = 42.032974; worldCenter.longitude =21.359375; 

     MKCoordinateRegion worldmap = MKCoordinateRegionMake(worldCenter, globe); 
     mapview.region = worldmap; 
     mapview.zoomEnabled = NO; 
     mapview.showsUserLocation = YES; 
     mapview.delegate = self; 

     NSRange theRange; 
     theRange.location = 1; 
     theRange.length = [annotations count]-1; 

     [mapview addAnnotations:[annotations subarrayWithRange:theRange]]; 
     [self.view addSubview:mapview]; 
} 

에만 문제가 가로 방향으로 자체 명단.

Incorrect span UPDATE

내가보기를 만진 후에는 걸쳐 방법이있다. Correct span

+0

이 보인다? 멀리 볼 수있는 화면의 오른쪽에 '왼쪽'으로 렌더링 할 수있는지도가 없습니다. 즉, 세계의 끝입니다.) - 문제가 해결되었는지 스팬 값으로 확인해보십시오. – Rog

+0

@Rog이 뷰를 터치하자마자 렌더링이 잘됩니다. 지구의 고도를 클리핑하여 자동으로 크기를 조정하기 때문에 항상 충분한 세계관이 있습니다. – bioffe

+1

화면을 터치하고 다시 렌더링 할 때 오른쪽에서 무엇을 볼 수 있습니까? 나는지도 앱에서 내 최대 축소를 시도했고 오른편은 위에 게시 한 내용과 일치하므로 궁금합니다!? – Rog

답변

0

코드를 사용하여 빠른 테스트를 수행하여 (예상했던) 동일한 결과를 얻었습니다. 나는 여전히 맵 자체에 문제가 없다고 생각하지만, 센터 좌표와 맵 스팬을 설정하는 방식으로 생각합니다. 최대 스팬을 사용하여 맵을 왼쪽으로 너무 멀리 중앙에 놓으려는 중입니다.지도가 전체 화면을 채우고 중심점을 유지하는 유일한 방법은 스트레칭 자체가 될 수 있으므로 바람직하지 않습니다. 위도와 경도를 0으로 설정하면 누락 된 부분이없는 동일한 뷰를 얻을 수 있습니다.

1

그럼에도 불구하고 그것은 Apple의 버그입니다. iPad-landscape 모드에서는 지구의 360도를 커버하기에 길쭉 거리는 범위가 충분하지 않을 수 있습니다. 확대/축소로 자동 크기 조정해야하지만 그렇지 않습니다. centerMap이 정확히 0도 경도 인 경우에만 자동으로 조정됩니다. 기묘한.

해결 방법 :지도 전체 화면을 채우기 위해 너무 큰 스팬과 함께 세계의 중심에있는지도의 중심하려는처럼

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { 
    CLLocationCoordinate2D worldCenter; worldCenter.latitude = 42.032974; 
    worldCenter.longitude = UIDeviceOrientationIsLandscape(toInterfaceOrientation)? 0.0 : 21.359375; 
    mapview.centerCoordinate = worldCenter; 
}