2013-03-07 4 views
0

현재 위치를 가져올 수 없습니다. 다른 곳에서 내 앱을 실행하면 앱에서 마지막 위치를 얻을 수 있습니다. 그러나 나는 마지막 위치를 원하지 않습니다. 앱을 닫고 다시 시작하면 앱에서 현재 위치를 가져올 수 있습니다. 신청서를 처음 열어도 현재 위치는 어떻게 알 수 있습니까?iOS에서 현재 위치를 얻는 방법은 무엇입니까?

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    [locationManager startUpdatingLocation]; 

    self.mapView.delegate = self; 
    [self.mapView setShowsUserLocation:YES]; 

    locationManager.delegate=self; 

    locationManager = [[CLLocationManager alloc] init]; 

    locationManager.delegate=self; 
    locationManager.desiredAccuracy=kCLLocationAccuracyBest; 
    locationManager.distanceFilter=kCLDistanceFilterNone; 

    location = [locationManager location]; 

    CLLocationCoordinate2D coord; 
    coord.longitude = location.coordinate.longitude; 
    coord.latitude = location.coordinate.latitude; 
    lat = coord.latitude; 
    longt = coord.longitude; 
} 
+0

[을 locationManager를 startUpdatingLocation]; 델리게이트를 설정 한 후이 줄을 넣으십시오. – Rajneesh071

답변

8

당신은 당신은 Location Awareness Programming Guide에서 제공 한 설명서를 읽어야의 대리자 메서드

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

- (void)locationManager:(CLLocationManager *)manager 
     didFailWithError:(NSError *)error 
{ 

} 
+0

아니요. 'CLLocationManager'가 위치가 determent라는 것을 기다려야합니다. – rckoenes

+1

그게 내가 원하는거야 –

+0

당신은 좋은 해결책을주었습니다 ... ram ram sa aapne bhi. –

0

을 자사의 대표

locationManager = [[CLLocationManager alloc] init]; 
locationManager.delegate=self; 
locationManager.desiredAccuracy=kCLLocationAccuracyBest; 
locationManager.distanceFilter=kCLDistanceFilterNone; 

[locationManager startUpdatingLocation]; 

을 설정하기 전에 [locationManager startUpdatingLocation];을하고 구현한다.

특히 현재 위치를 묻는 경우 시스템에서 가장 최근에 알려진 위치를 즉시 반환하므로 사용자가 유용하게 사용할 수 있습니다. 과거 위치를 신경 쓰지 않는다면, 가장 최근의 위치 정보를 속성 인 CLLocation을보고 최근의 위치 정보 만 사용하여 최근 위치 정보를 확인할 수 있습니다.

0

실제로 CLLocationManager 설명서를 읽어야합니다.

와트는 장치 위치를 결정하는 데 시간이 걸리기 때문에 작동하지 않습니다. 그 때문에 CLLocationManager이 위치가 determent임을 알릴 때까지 기다려야합니다.

위치가 determent인지 또는 위치 결정에 실패했는지 알려주는 CLLocationManagerDelegate을 구현해야합니다. 당신이 [CCLocationManager authorizationStatus]으로 위치 서비스를 사용할 수있는 권한을 부여하는 어떠했는지 또한 확인해야

if ([CCLocationManager locationServicesEnabled]) { 
    // The location services are available. 
} 

: 위치와 determent 될 수 있다면

또한 당신은 또한 확인해야합니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    locationManager = [[CLLocationManager alloc] init]; 
    locationManager.delegate = self; 
    locationManager.distanceFilter = kCLDistanceFilterNone; // whenever we move 
    locationManager.desiredAccuracy = kCLLocationAccuracyHundredMeters; // 100 m 
    [locationManager startUpdatingLocation]; 
} 

을 그리고 위치를 업데이트하는 방법에 대한,이 방법을 사용합니다 :

2

현재 위치뿐만 아니라 좌표를 얻기 위해, 당신은 당신의 viewDidLoad 방법 만이 작업을 수행해야

- (void)locationManager:(CLLocationManager *)manager 
     didUpdateToLocation:(CLLocation *)newLocation 
       fromLocation:(CLLocation *)oldLocation{ 
// your code here... 
} 
관련 문제