Проблема рендеринга MKMapView на iPad - PullRequest
2 голосов
/ 26 февраля 2011

Моя проблема возникает только на iPad.Всегда есть неопределяемая часть MKMapView (правая сторона на рисунке ниже).Как только я касаюсь этого окна, представление карты перерисовывает себя очень хорошо.Но это никогда не делает правильно сразу.Эта проблема возникает в iOS 4.2, а также в iOS 3.2 в Симуляторе и Устройстве.Код, который создает 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];   
}

Проблема проявляется только в альбомной ориентации.как это охватывает после того, как я коснулся зрения.Correct span

Ответы [ 2 ]

1 голос
/ 01 марта 2011

Тем не менее это ошибка Apple. В ландшафтном режиме iPad ваш долготный охват может быть недостаточным для охвата 360 градусов земного шара. он должен автоматически масштабироваться с увеличением, но это не так. он автоматически корректируется, только если ваш centerMap точно на 0 градусов долготы. Weird.

Обход:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
    CLLocationCoordinate2D worldCenter; worldCenter.latitude = 42.032974; 
    worldCenter.longitude = UIDeviceOrientationIsLandscape(toInterfaceOrientation)? 0.0 : 21.359375;
    mapview.centerCoordinate = worldCenter;
}
0 голосов
/ 01 марта 2011

Я провел быстрый тест с вашим кодом и получил тот же результат (что я и ожидал).Я все еще думаю, что проблема не в самой карте, а в том, как вы устанавливаете свои координаты центра плюс диапазон карты.Вы пытаетесь отцентрировать карту слишком далеко влево с максимальным пролетом, и единственный способ для карты заполнить весь экран и сохранить центральную точку - это растянуть ее, что нежелательно.Если вы установите lat и long в 0, вы получите то же представление без отсутствующей части.

...