Ich verwende eine MKUserTrackingBarButtonItem
Schaltfläche, damit der Benutzer seinen Standort auf einer Karte automatisch verfolgen kann. Das Problem ist, dass wenn sie auf diese Schaltfläche tippen, sie zu weit herausgezoomt ist. Ich möchte, dass es bei einer bestimmten Zoomstufe (d. H. Spanne) beginnt. Wie kann ich das erreichen?Wie lege ich die Zoomstufe fest, wenn ein MKUserTrackingBarButtonItem verwendet wird?
Wenn der Benutzer auf die Schaltfläche tippt, um zu MKUserTrackingModeFollow
zu wechseln, scheint dieselbe Zoomstufe zu verwenden, zu der der Benutzer zuletzt manuell gewechselt hat (z. B. mithilfe von Gesten auf der Karte). Der Versuch, eine andere Zoomstufe über setRegion
oder setVisibleMapRect
anzugeben, hat keinen Einfluss darauf, welche Zoomstufe verwendet wird, wenn der Modus auf MKUserTrackingModeFollow
geändert wird.
Wenn versucht wird, die Region auf override mapView:didChangeUserTrackingMode:
festzulegen, wird der Modus auf MKUserTrackingModeNone
zurückgesetzt. Beispiel:
- (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];
}
}
Wenn ich den Modus unmittelbar nach der Region Einstellung zurückgesetzt werden versuchen, es funktioniert gut, wenn der Benutzer stationär ist, sondern zoomt wieder aus, wenn der Benutzer bewegt.
Die einfachste Lösung wäre, wenn es eine Möglichkeit gäbe, einfach etwas wie eine Zoomstufe für MKUserTrinking zu spezifizieren, indem man mir meinen Spannenwert sendet. Da dies jedoch nicht zu existieren scheint, was kann ich noch tun?
Haben Sie eine Lösung gefunden Dies? Ich haue mir gerade den Kopf gegen das selbe Problem. –