Hvordan vise bruker beliggenhet i mapkit?

stemmer
3

Jeg vil gjerne vise den blå pulserende prikken for en brukers plassering. Jeg gjør dette:

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

Men jeg omsider får

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

Bør jeg gjøre dette på en annen måte?

-- REDIGERE --

Jeg er også å gjøre dette, som er der jeg til slutt får den ovenfor unntak:

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

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

Etableringen er et egendefinert klasse jeg har på AddressNote. Når etablering har en verdi, oppstår det unntak. Hvis jeg ikke satt ShowsUserLocation, alt fungerer fint, men selvfølgelig, ser jeg ikke brukerstedet.

Publisert på 14/03/2010 klokken 19:02
kilden bruker
På andre språk...                            


3 svar

stemmer
15

Når viewForAnnotationforespørres, må du sjekke været eller ikke gitt merknad tilsvarer gjeldende brukerstedet. Hvis ja, returnerer null, ellers returnere din egen normal annoationView.

- (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] en alternativ måte er å kontrollere den type av klassen av kommentaren:

- (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.

Svarte 16/03/2010 kl. 09:05
kilden bruker

stemmer
8

Ikke sikker på hva det egentlige problemet er, men du trenger ikke å gjøre dette på hver oppdatering. Sett det en gang etter å lage den mapView, og du bør være i virksomhet.

mapView.showsUserLocation = YES;

Du må kanskje zoome kartet til regionen der brukeren faktisk er, for prikken for å være synlig.

Svarte 14/03/2010 kl. 19:07
kilden bruker

stemmer
0

Du bruker feil delegat metoden. For mapview, bør du bruke denne delegat metoden for å fange brukerstedet:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
}
Svarte 04/05/2011 kl. 23:49
kilden bruker

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