Wie Benutzer-Standort in MapKit angezeigt werden?

stimmen
3

Ich möchte die blauen pulsierenden Punkt für den Standort eines Nutzers angezeigt werden soll. Ich tue dies:

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation    *)newLocation fromLocation:(CLLocation *)oldLocation{
//some other stuff here
[self.mapView setShowsUserLocation:YES];
}

Aber ich habe schließlich

-[MKUserLocation establishment]: unrecognized selector sent to instance 0x125e90

Soll ich dies auf eine andere Weise tun?

- EDIT -

Ich mache das auch, das ist, wo ich schließlich die obige Ausnahme erhalten:

- (MKAnnotationView *) mapView:(MKMapView *)_mapView viewForAnnotation:(AddressNote *) annotation{

if(annotation.establishment != nil){
//do something}

Einrichtung ist eine benutzerdefinierte Klasse I auf AddressNote haben. Wenn Einrichtung einen Wert hat, tritt die Ausnahme. Wenn ich nicht ShowsUserLocation gesetzt, funktioniert alles gut, aber natürlich habe ich nicht den Standort des Nutzers sehen.

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


3 antworten

stimmen
15

Wenn die viewForAnnotationangefordert wird, müssen Sie überprüfen , ob oder nicht die angegebene Anmerkung zum aktuellen Standort des Nutzers entspricht. Wenn ja, Fehlanzeige , da ansonsten Ihre eigene normale annoationView zurückzukehren.

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {
    if (annotation==self.mapView.userLocation)
        return nil;
    //then the rest of your code for all your 'classic' annotations.

[EDIT] eine alternative Möglichkeit ist es, die Art der Klasse der Anmerkung zu überprüfen:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation {
    if ([annotation isKindOfClass:[MKUserLocation class]])
        return nil;
    //then the rest of your code for all your 'classic' annotations.

Beantwortet am 16/03/2010 um 10:05
quelle vom benutzer

stimmen
8

Nicht sicher , was das eigentliche Problem ist, aber Sie brauchen dies nicht bei jedem Update zu tun. Legen Sie es einmal nach dem Erstellen mapView, und Sie sollten im Geschäft.

mapView.showsUserLocation = YES;

Möglicherweise müssen Sie die Karte in die Region vergrößern, wo der Benutzer tatsächlich ist, denn der Punkt sichtbar sein.

Beantwortet am 14/03/2010 um 20:07
quelle vom benutzer

stimmen
0

Sie verwenden die falsche Delegatmethode. Für mapview, sollten Sie diese Delegatmethode verwenden, um die Benutzerposition zu fangen:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
}
Beantwortet am 05/05/2011 um 00:49
quelle vom benutzer

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