Używam przycisku MKUserTrackingBarButtonItem
, aby umożliwić użytkownikowi automatyczne śledzenie ich lokalizacji na mapie. Problem polega na tym, że po dotknięciu tego przycisku jest on powiększany zbyt daleko. Chcę zacząć od określonego poziomu powiększenia (tj. Zakresu). Jak mogę to osiągnąć?Jak określić poziom powiększenia podczas korzystania z MKUserTrackingBarButtonItem?
Gdy użytkownik dotknie przycisku, aby zmienić na MKUserTrackingModeFollow
, wydaje się, że używa tego samego poziomu powiększenia, który użytkownik ostatnio ręcznie zmienił (tj. Za pomocą gestów na mapie). Próba określenia innego poziomu powiększenia za pomocą setRegion
lub setVisibleMapRect
nie wpływa na to, jaki poziom powiększenia będzie używany po zmianie trybu na MKUserTrackingModeFollow
.
Próba ustawienia override mapView:didChangeUserTrackingMode:
w celu ustawienia regionu powoduje zmianę trybu z powrotem na MKUserTrackingModeNone
. Przykład:
- (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];
}
}
Gdybym próbują przywrócić tryb natychmiast po ustawieniu regionu, to działa dobrze, gdy użytkownik jest nieruchoma, ale powiększa się z powrotem, gdy użytkownik jest w ruchu.
Najprostszym rozwiązaniem byłby sposób, aby po prostu podać coś w rodzaju poziomu powiększenia MKUserTraking, wysyłając mu moją wartość zakresu. Jednak skoro to nie wydaje się istnieć, co jeszcze mogę zrobić?
znalazłeś rozwiązanie to? Obecnie walczę z tym samym problemem. –