Megtaláljuk a felhasználó tartózkodási helyét, mielőtt térképbetöltések

szavazat
1

Próbálom megtalálni a felhasználó tartózkodási helyét a:

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

A probléma az, hogy én még nem inicializált a térképen, így a fenti nem működik. Van egy módja, hogy a felhasználó tartózkodási helyét használata nélkül mapkit? Vagy kéne lennie egy másik technika?

A kérdést 12/03/2010 21:34
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
1

Ahhoz, hogy a felhasználó tartózkodási helyét, amire szükség van, hogy valóban „start” helyét manager, mielőtt megpróbálja olvasni a hely adatait. Azt javaslom, hogy nézd meg LocateMe mintát Apple.

LocateMe Sample Code

Dióhéjban, egyre felhasználó helyére vonatkozó információt meg lehet tenni két lépésben:

- (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; 
}

... és akkor,

- (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;
    }
}

Remélem ez segít!

Válaszolt 19/04/2010 11:46
a forrás felhasználó

szavazat
0

Majdnem hagyni ezt a kérdést, de látni valaki odaadta egy felfelé szavazás. Úgy tűnik, ez a válasz:

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

appDelegate csak egy hivatkozás a kérelmet küldött, ahol a létesítmény vezetője fokon él.

Válaszolt 12/03/2010 21:41
a forrás felhasználó

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