Wie Sie festlegen, zoom-Stufe, um Benutzer-Standort in MapView
Im mit MKMapView, um die Benutzer-Standort und, wenn die Ansicht geladen wird, zeigt der ganzen Welt anzeigen. Gibt es trotzdem, kann ich eine zoom-Stufe, so dass der Benutzer nicht ständig Zoomen immer um den Blick auf die Stadt oder Blick auf die Straße...Es wäre eine große Hilfe. Ich habe meine code unten verweisen...
- (void)viewDidLoad
{
[super viewDidLoad];
[ self.mapView.delegate self];
[self.mapView setShowsUserLocation:YES];
//Do any additional setup after loading the view, typically from a nib.
}
-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
CLLocationCoordinate2D loc = [userLocation coordinate];
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(loc, 500, 500);
[self.mapView setRegion:region animated:YES];
}
- (void)viewDidUnload {
[super viewDidUnload];
[_mapView setShowsUserLocation:NO];
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den code, den Sie gepostet habe sollte funktionieren, für die meisten Teil außer für diese kritische Grenze in
viewDidLoad
:Im wesentlichen, diese Zeile macht nichts.
Es ist nicht Einstellung der Kartenansicht ist
delegate
Eigenschaft (was ich auch annehmen, dass es tun soll).Was es tatsächlich tut ist aufrufen
self
auf diedelegate
Eigenschaft.Die Kartenansicht ist
delegate
ist nicht immer gesetzt (es bleibtnil
) und so diedidUpdateUserLocation
delegate-Methode wird nie aufgerufen wird und so die Karte nicht Zoomen, um den Standort des Benutzers.Die Zeile sollte so sein:
oder noch einfacher:
Beachten Sie, dass in iOS 5 oder höher, können Sie nur setzen
userTrackingMode
und die Karte automatisch so gezoomt, und befolgen Sie die Position des Benutzers, so dass Sie nicht haben, um es manuell tun.Beachten Sie auch, dass seit iOS 6
viewDidUnload
ist veraltet und wird auch nicht durch das OS aufgerufen werden. Sie wollen wahrscheinlich zu bewegen, der die Deaktivierung dershowsUserLocation
zuviewWillDisappear
(und verschieben damit zuviewWillAppear
).userLocation coordinate
verwendenmapView.userLocation.location coordinate
.[userLocation coordinate]
verwenden[mapView.userLocation.location coordinate]
. Wenn Sie immer noch Probleme haben, poste bitte noch eine Frage mit dem code, den Sie versucht.[self.mapView setCenterCoordinate:_mapView.userLocation.location.coordinate animated:YES];
es hat Prima funktioniert..;)Versuchen, Kann dies Helfen, voll für Sie
hier 26.0000 und 75.00 ist Standort der Benutzer und MKCoordinateSpanMake ist zoom-level. Es steigt Ihr Zoomen, wie Sie möchten.
Versuchen, diese, In ViewDidLoad
set MKCoordinateRegion und region ändern Spanne entsprechend Ihrer Anforderung
//- input, der region und map-Bereich als unter 30000
//in der Mitte Ihrer Karte an der Aktuellen Position
//An aktuelle Position verwenden CLLocationManagerDelegate