Я использую кнопку MKUserTrackingBarButtonItem
, чтобы пользователь мог автоматически отслеживать их местоположение на карте. Проблема в том, что когда они нажимают эту кнопку, она слишком сильно масштабируется. Я хочу, чтобы он начинался с определенного уровня масштабирования (т.е. Диапазона). Как я могу достичь этого?
Когда пользователь нажал кнопку, чтобы перейти на MKUserTrackingModeFollow
, он, похоже, использует тот же уровень масштабирования, который пользователь последний раз вручную изменил (например, используя жесты на карте). Попытка указать другой уровень масштабирования с помощью setRegion
или setVisibleMapRect
не влияет на то, какой уровень масштабирования будет использоваться при изменении режима на MKUserTrackingModeFollow
.
Попытка override mapView:didChangeUserTrackingMode:
установить область приводит к тому, что режим будет изменен на MKUserTrackingModeNone
. Пример:
- (void)mapView:(MKMapView *)mapView didChangeUserTrackingMode:(MKUserTrackingMode)mode animated:(BOOL)animated {
if (mode == MKUserTrackingModeFollow) {
CLLocationCoordinate2D center = mapView.userLocation.location.coordinate;
MKCoordinateSpan span = MKCoordinateSpanMake(0.002306, 0.001717);
[mapView setRegion:MKCoordinateRegionMake(center, span) animated:YES];
// [mapView setUserTrackingMode:MKUserTrackingModeFollow animated:NO];
}
}
Если я попытаюсь выполнить reset режим сразу после настройки области, он отлично работает, если пользователь неподвижен, но увеличивает масштаб, если пользователь движется.
Самое простое решение было бы, если бы можно было просто указать что-то вроде уровня масштабирования для MKUserTraking, отправив его значение моего диапазона. Однако, поскольку это, похоже, не существует, что еще я могу сделать?