Găsirea locație înainte de harta sarcinilor

voturi
1

Încerc să găsesc locația utilizatorului folosind:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = mapView.userLocation.location;
    _location = userLoc.coordinate;
}

Problema este că nu am inițializat încă harta astfel încât cele de mai sus nu funcționează. Există o modalitate de a obține locația utilizatorului fără a utiliza mapkit? Sau ar trebui să fie folosind o tehnică diferită?

Întrebat 12/03/2010 la 21:34
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
1

Pentru a obține locația utilizatorului trebuie să de fapt, „start“ managerul de locație înainte de a încerca să citească informațiile de localizare. Vă sugerez să vă uitați la probă LocateMe de la Apple.

Exemplu de cod LocateMe

Pe scurt, informații despre locație obtinerea utilizatorului se poate face în două etape:

- (void)viewDidLoad {
    [[self locationManager] startUpdatingLocation];
}

- (CLLocationManager *)locationManager { 

    if (locationManager != nil) {       
        return locationManager; 
    }

    NSLog(@"%s, Creating new Location Manager instance.", __FUNCTION__);
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.desiredAccuracy = kCLLocationAccuracyBest; 
    locationManager.distanceFilter = DISTANCE_FILTER_VALUE;
    locationManager.delegate = self; 

    return locationManager; 
}

... și apoi,

- (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { 
    NSLog(@"%s, location manager returned a new location.", __FUNCTION__);

    // Check if location is valid (or good enough for us), 
    // and then process the location
    if ([self locationIsValid:newLocation]) {
            [self processLocation:newLocation];

            // Very important! When your done with it, stop the location manager
            [[self locationManager] sopUpdatingLocation];

            // (Maybe even) clear it
            locationManager.delegate = nil;
            [locationManager release];
            locationManager = nil;
    }
}

Sper că acest lucru vă ajută!

Publicat 19/04/2010 la 11:46
sursa de către utilizator

voturi
0

Aproape am șters această întrebare, dar vezi pe cineva a dat un vot în sus. Aceasta pare a fi răspunsul:

CLLocationCoordinate2D _location;
CLLocation *userLoc = nil;
if(appDelegate.clLocationManager.locationServicesEnabled){
    userLoc = appDelegate.clLocationManager.location;
    _location = userLoc.coordinate;
}

appDelegate este doar o referire la delegatul aplicației, în cazul în care trăiește locația mea manager de instanță.

Publicat 12/03/2010 la 21:41
sursa de către utilizator

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