Recenter MapKit map - PullRequest
       15

Recenter MapKit map

0 голосов
/ 10 января 2012

Я хотел бы перенести карту MapKit в приложение для IPad по коду. Ничего больше, панорамирование карты в заданном центре с исходным уровнем масштабирования. Без увеличения, без уменьшения, просто панорамирование.

Вот что я делаю:

- (void)panToLatitude:(double)lat andLongitude: (double) lon sender: (id)      sender
{
CLLocationCoordinate2D zoomLocation;
zoomLocation.latitude = lat;
zoomLocation.longitude = lon;

MKCoordinateRegion viewRegion = MKCoordinateRegionMake(zoomLocation, [self.map region].span);

MKCoordinateRegion adjustedRegion = [self.map regionThatFits:viewRegion];                

[self.map setRegion:adjustedRegion animated:YES];
}

Работает, но иногда (в 20-30% случаев) меняет уровень масштабирования, уменьшает масштаб. Я не хочу этого, просто переназначить карту.

Есть идеи?

Спасибо

1 Ответ

1 голос
/ 10 января 2012

Представление карты ведет себя правильно, поскольку в нем точно отображается область карты с использованием проекции Меркатора. Расстояние между двумя меридианами долготы увеличивается по мере приближения к экватору. В зависимости от того, откуда вы выполняете панорамирование, представлению карты может потребоваться отрегулировать уровень масштабирования в соответствии с указанным регионом.

Для решений я бы проверил эту категорию на MKMapView, написанном Троем Брантом. Это позволяет вам изменять положение вида карты, сохраняя при этом постоянный масштаб, и делает всю работу по математике за вас.

http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

...