iPhone τρέχουσα τοποθεσία του χρήστη συντεταγμένων που απεικονίζουν ως (0,0)

ψήφοι
8

Προσπαθώ να πάρει στους χρήστες τρέχον γεωγραφικό πλάτος και μήκος με αυτή τη μέθοδο viewDidLoad. Η προκύπτουσα χάρτης δείχνει σωστά την τρέχουσα θέση, ωστόσο η NSLog δείχνει σταθερά:

2009-09-19 16:45:29.765 Mapper[671:207] user latitude = 0.000000
2009-09-19 16:45:29.772 Mapper[671:207] user longitude = 0.000000

Ο καθένας ξέρει τι είμαι λείπει εδώ; Ευχαριστώ εκ των προτέρων για την βοήθειά σας!

- (void)viewDidLoad {
    [super viewDidLoad];
    [mapView setMapType:MKMapTypeStandard];
    [mapView setZoomEnabled:YES];
    [mapView setScrollEnabled:YES];
    [mapView setShowsUserLocation:YES];

    CLLocation *userLoc = mapView.userLocation.location;
    CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

    NSLog(@user latitude = %f,userCoordinate.latitude);
    NSLog(@user longitude = %f,userCoordinate.longitude);
}
Δημοσιεύθηκε 19/09/2009 στις 21:50
πηγή χρήστη
Σε άλλες γλώσσες...                            


8 απαντήσεις

ψήφοι
9

Ο χάρτης δεν θα προσπαθήσει να πάρει τη θέση των χρηστών, μέχρι να είναι πραγματικά εμφανίζεται, όσο ξέρω. Ένα καλό τεστ του ότι είναι, όταν παίρνετε το παράθυρο διαλόγου που σας ρωτά αν είναι εντάξει για το app για να πάρει τη θέση των χρηστών; Σύμφωνα με την εμπειρία μου που έχει πάντα έρθει μόνο μετά την χάρτης δείχνει στην οθόνη.

Ο καλύτερος τρόπος για να προσεγγίσουμε αυτό το πρόβλημα, αν θα πρέπει να έχετε μια θέση στην εκκίνηση, είναι να εφαρμόσει το κλασικό πυρήνα κωδικό Θέση χειριστή και να πάρει τη θέση από ότι αρχικά. Μπορείτε να σταματήσετε να λαμβάνετε ενημερώσεις από εκεί μια φορά το χάρτη θα πάρει περαιτέρω αλλαγές από εκεί (αν και, αν χρειάζεται συνεχή ενημέρωση είστε σε καλύτερη θέση μόνο σύμφωνα με το πρότυπο ενημερώσεις πυρήνα Τοποθεσία. Αν το σκεφτείτε, όταν έχετε «παρουσιάζει χρήστη τοποθεσία»ενεργοποιημένη στο χάρτη την περαιτέρω χρήση των βασικών Τοποθεσία από την εφαρμογή σας είναι ουσιαστικά ελεύθερος αφού το GPS θα απολυθούν μέχρι όλη την ώρα έτσι κι αλλιώς.

Απαντήθηκε 20/09/2009 στις 03:05
πηγή χρήστη

ψήφοι
4

Αν προσπαθήσετε να πάρετε το χρήστη συντεταγμένες στο viewDidLoad μέθοδο (), θα δώσει πάντα 0,0 εκ τούτου, επειδή δεν έχει ακόμη προετοιμαστεί.

Θα πρέπει να ρίξετε μια ματιά στο «Πού Am I» το site μορφή δείγμα κώδικα της Apple. Εξηγεί τι χρειάζεστε. Θα πρέπει να χρησιμοποιήσετε CLLocationManager τάξη. Θα πρέπει, επίσης, τη μέθοδο

*-(void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation*

Αυτή η μέθοδος θα κληθεί αυτόματα κάθε φορά που την τοποθεσία του χρήστη ενημερώνεται. Εάν χρησιμοποιείτε προσομοιωτή, τότε αυτή η μέθοδος θα κληθεί μόνο μια φορά και θα επιστρέψει κάποια προκαθορισμένη συντεταγμένες.

Η ελπίδα αυτό βοηθά.

Απαντήθηκε 21/09/2009 στις 06:36
πηγή χρήστη

ψήφοι
2

Από το έγγραφο σχετικά με CLLocation , εάν η οριζόντια ακρίβεια ή την κάθετη ακρίβεια είναι αρνητικό, αυτό σημαίνει ότι δεν μπορεί να βρει μια τιμή. Υποψιάζομαι ότι είναι ό, τι συμβαίνει εδώ. Λάβετε υπόψη ότι αν εξετάσουμε μόνο μία φορά, μπορεί να σας δώσει μια κατά προσέγγιση τελευταία γνωστή θέση πριν από ποτέ τη βελτίωση του αποτελέσματος της ακρίβειας.

Οριζόντια Ακρίβεια Το γεωγραφικό πλάτος του συντονίζει και μήκος προσδιορίζεται το κέντρο του κύκλου και η τιμή αυτή δείχνει την ακτίνα του κύκλου αυτού. Μια αρνητική τιμή σημαίνει ότι το γεωγραφικό πλάτος και μήκος συντεταγμένων είναι άκυρη.

Απαντήθηκε 19/09/2009 στις 21:55
πηγή χρήστη

ψήφοι
1

Όπως Kendall είπε, η MKMapView δεν έχει τη θέση του χρήστη, μέχρι να ολοκληρωθεί η φόρτωση και η μέθοδος viewDidLoad είναι συνήθως πολύ νωρίς για να το ζητήσετε. Ένα απλούστερο τρόπο από ό, τι χρησιμοποιώντας CoreLocation είναι η εφαρμογή της μεθόδου MKMapViewDelegate -(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation. Θα σας δώσει την τοποθεσία του χρήστη, από τη στιγμή που βρίσκεται, χωρίς να χρειάζεται να ασχοληθεί με CLLocationManager.

Απαντήθηκε 08/01/2013 στις 18:33
πηγή χρήστη

ψήφοι
1

Θα πρέπει να λάβετε τη συντεταγμένη από CoreLocation αντί MapKit. MapView θα εμφανίσει τη θέση του χρήστη, αφού πήρε πραγματικά την τρέχουσα θέση. Πριν προσδιορίζεται η τοποθεσία, το γεωγραφικό πλάτος και μήκος και οι δύο οριστεί σε 0. 3

Θα πρέπει να δημιουργήσετε ένα instace CLLocationManager, που συνέδρων. Θα ειδοποιηθείτε όταν η θέση προσδιορίζεται.

Απαντήθηκε 20/09/2009 στις 06:17
πηγή χρήστη

ψήφοι
0

Δοκιμάστε αυτό το

CLLocation *userLoc = mapView.userLocation.location;
CLLocationCoordinate2D userCoordinate = userLoc.coordinate;

NSLog(@"user latitude = %f",userCoordinate.latitude);
NSLog(@"user longitude = %f",userCoordinate.longitude);

ViewdidAppear: ή καλέστε την εκτέλεση seletor μετά από καθυστέρηση

Απαντήθηκε 05/05/2014 στις 12:32
πηγή χρήστη

ψήφοι
0

Αυτή η απάντηση εξηγεί πώς να ορίσετε ένα απόσπασμα του χάρτη με την τοποθεσία του χρήστη:

HowTo προετοιμάσετε MKMapView με μια συγκεκριμένη τοποθεσία χρήστη;

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

ψήφοι
-1

Προσθέστε αυτό το τμήμα σας viewDidLoad

mapView.showsUserLocation = YES;
Απαντήθηκε 02/05/2010 στις 05:56
πηγή χρήστη

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