Wie Benutzer-Standort mit MapKit folgen

stimmen
10

Ich verwende MapKit auf die Lage relativ um sie an die Pins des Benutzers angezeigt werden soll. Ich möchte in der Lage sein, um die Funktionalität zu imitieren, die Karten in der unteren linken Ecke des Bildschirms über die Fadenkreuz-Taste zur Verfügung stellen. Ich bin schon bewusst, dass MapKit ein CLLocation Objekt mit der Position des Benutzers bietet über MKUserLocation, ich wollte nur Rat suchen, wie ich an dieser Stelle Fokus behalten soll. Meine erste Neigung war eine NSTimer zu verwenden, um die Karte zu zentrieren, dass alle 500ms koordinieren oder so.

Gibt es einen besseren Weg, dies zu tun? Gibt es etwas, gebaut um MapKit, die ich vermisse, dass dies erreichen?

Vielen Dank, Brendan

Veröffentlicht am 14/03/2010 um 02:09
quelle vom benutzer
In anderen Sprachen...                            


4 antworten

stimmen
39

Wenn Sie auf IOS5 sind + Dies ist sehr einfach. Ändern Sie einfach die „userTrackingMode“ unter Verwendung von Code wie:

[_mapView setUserTrackingMode:MKUserTrackingModeFollow animated:YES];

Dies wird sanft mit den Mitgliedern aktuellen Standort folgen. Wenn Sie die Karte ziehen wird es auch den Tracking - Modus zurück zu MKUserTrackingModeNonedem ist in der Regel das Verhalten Sie wollen.

Beantwortet am 20/04/2013 um 10:40
quelle vom benutzer

stimmen
12

Es ist wirklich einfach die Karte automatisch genau wie die Google Maps den Standort des Nutzers aktualisieren. Setzen Sie einfach showsUserLocation auf YES

self.mapView.showsUserLocation = YES

... und implementieren Sie dann die MKMapViewDelegate die Karte neu zu zentrieren, wenn der Standort aktualisiert wird.

-(void)               mapView:(MKMapView *)mapView 
        didUpdateUserLocation:(MKUserLocation *)userLocation
{
    if( isTracking )
    {
        pendingRegionChange = YES;
        [self.mapView setCenterCoordinate: userLocation.location.coordinate
                                 animated: YES];
    }
}

Und der Benutzer zu erlauben, ohne zu stehlen den Blick zurück auf die aktuelle Lage zu Zoomen und Schwenken ...

-(void) mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
    if( isTracking && ! pendingRegionChange )
    {
         isTracking = NO;
         [trackingButton setImage: [UIImage imageNamed: @"Location.png"] 
                         forState: UIControlStateNormal];
    }

    pendingRegionChange = NO;
}

-(IBAction) trackingPressed
{
    pendingRegionChange = YES;
    isTracking = YES;
    [mapView setCenterCoordinate: mapView.userLocation.coordinate 
                        animated: YES];

    [trackingButton setImage: [UIImage imageNamed: @"Location-Tracking.png"] 
                    forState: UIControlStateNormal];
}
Beantwortet am 01/09/2010 um 02:42
quelle vom benutzer

stimmen
7

Ich denke , dass ich tatsächlich an die Corelocation verwenden CLLocationManagerund seine Delegierten Methode verwenden locationManager:didUpdateToLocation:fromLocation:.

Auf diese Weise haben Sie nicht den Aufwand für ein NSTimerund aktualisiert sie nur , wenn es einen neuen Standort verfügbar ist.

Sie können die Länge und Breite aus dem Pull CLLocationauf die gesendete Objekt locationManager:didUpdateToLocation:fromLocation:Methode und es in der Kartenansicht passieren.

Beantwortet am 14/03/2010 um 05:24
quelle vom benutzer

stimmen
0

Ich gehe mit Jacob Relkin Antwort. Dieses Tutorial bietet ein Schritt- für -Schritt - Verfahren der Verwendung von Corelocation in einem iPhone - App. Hoffe , das hilft dir.

Alles Gute.

Beantwortet am 14/03/2010 um 06:17
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more