Πώς να εμφανίσετε την τοποθεσία του χρήστη στο mapkit;

ψήφοι
3

Θα ήθελα να εμφανιστεί το μπλε κουκίδα παλμούς για την τοποθεσία του χρήστη. Κάνω αυτό:

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

Αλλά εγώ τελικά να πάρει

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

Θα έπρεπε να κάνω αυτόν τον τρόπο κάποιο άλλο τρόπο;

-- ΕΠΕΞΕΡΓΑΣΙΑ --

Είμαι, επίσης, να γίνει αυτό, το οποίο είναι που τελικά να πάρει την παραπάνω εξαίρεση:

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

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

εγκατάσταση είναι ένα έθιμο τάξη που έχω στο AddressNote. Όταν εγκατάσταση έχει μια τιμή, εμφανίζεται η εξαίρεση. Αν δεν οριστεί ShowsUserLocation, όλα λειτουργούν καλά, αλλά φυσικά, δεν βλέπω την τοποθεσία του χρήστη.

Δημοσιεύθηκε 14/03/2010 στις 20:02
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
15

Όταν η viewForAnnotationζητηθεί, θα πρέπει να ελέγξετε καιρός ή όχι το δεδομένο σχολιασμό αντιστοιχεί στην τρέχουσα θέση του χρήστη. Εάν ναι, να επιστρέψει μηδέν, αλλιώς επιστρέψτε το δικό σας κανονικό 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] ένας εναλλακτικός τρόπος είναι να ελέγξετε το είδος της τάξης του σχολιασμού:

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

Απαντήθηκε 16/03/2010 στις 10:05
πηγή χρήστη

ψήφοι
8

Δεν είστε σίγουροι ποιο είναι το πραγματικό πρόβλημα είναι, αλλά δεν χρειάζεται να το κάνετε αυτό σε κάθε ενημέρωση. Ορίστε μια φορά μετά τη δημιουργία του mapView, και θα πρέπει να είναι στην επιχείρηση.

mapView.showsUserLocation = YES;

Ίσως χρειαστεί να μεγεθύνετε τον χάρτη στην περιοχή όπου ο χρήστης είναι στην πραγματικότητα, για την dot να είναι ορατά.

Απαντήθηκε 14/03/2010 στις 20:07
πηγή χρήστη

ψήφοι
0

Χρησιμοποιείτε τη μέθοδο λάθος εκπρόσωπος. Για MapView, θα πρέπει να χρησιμοποιούν αυτή τη μέθοδο εκπρόσωπος για να πιάσει τη θέση του χρήστη:

- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
}
Απαντήθηκε 05/05/2011 στις 00:49
πηγή χρήστη

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