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);
Для дальнейшего увеличения уменьшите количество метров.