MKMapView setVisibleMapRect не работает в первый раз

Я реализовал двойной тап для увеличения с помощью следующего кода.

CLLocation* currentLocation = [myArray objectAtIndex:5];
MKMapPoint annotationPoint =  MKMapPointForCoordinate(currentLocation.coordinate);
MKMapRect zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
[mapView setVisibleMapRect:zoomRect animated:YES];

Когда я дважды нажимаю в первый раз, масштабирование до определенного местоположения булавки не работает, в следующий раз работает нормально.

и если дважды коснуться другого местоположения очень далеко от местоположения контактов, то та же проблема, т.е. увеличение масштаба до определенного местоположения контакта не работает.

Может кто-нибудь есть идея, пожалуйста?

Спасибо

1 ответ

Чтобы центрировать карту по координате и уменьшить масштаб, чтобы показать некоторую долготу и широту по обе стороны от координаты, создайте MKCoordinateRegion возразить и обновить MKMapView показать новый регион:

CLLocation* currentLocation = [myArray objectAtIndex:5];
// Create a span covering 0.1 degrees east to west and north to south
MKCoordinateSpan degreeSpan = MKCoordinateSpanMake(0.1, 0.1);
// Create a region that centers the span on currentLocation
MKCoordinateRegion region = MKCoordinateRegionMake(currentLocation.coordinate, degreeSpan);
// Update the map to show the new region
[mapView setRegion:region animated:YES];

Для дальнейшего увеличения уменьшите размер диапазона градусов, например:

MKCoordinateSpan degreeSpan = MKCoordinateSpanMake(0.05, 0.05);

Вы также можете создавать регионы в метрах, что может быть проще рассуждать. Следующее создает область 1000 x 1000 метров:

MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(currentLocation.coordinate, 1000, 1000);

Для дальнейшего увеличения уменьшите количество метров.

Другие вопросы по тегам