2010-08-03 1 views
3

운전 경로 또는 이와 유사한 방법으로 사용하지 않습니다. 몇 가지 특수 효과가 있고 사용자가 그 중 하나 근처에있을 때 방아쇠를 당겨 사용자에게 알릴 수 있습니다.도착 방법 4-5 초마다 userLocation에서 거리

didUpdateToLocation이 startUpdatingLocation 호출 당 한 번만 호출 된 것처럼 보입니까? 적어도 내가 그 메서드 내에서 NSLog를 사용하면 콘솔에서 한 줄만 얻을 수 있습니다. 아니, 나는 아이폰으로 걷지 않고있다.

so : userLocation의 지속적인 모니터링을 설정하고 "콜백"을 얻는 올바른 방법은 무엇입니까? (3-4 초가 경과했거나 사용자가 이동 한 경우 10 미터)?

- (void) locationManager:(CLLocationManager*)manager didUpdateToLocation:(CLLocation*)newLocation fromLocation:(CLLocation*) oldLocation 
{ 
    // This will be called every time the device has any new location information. 
} 

시스템마다 didUpdateToLocation를 호출합니다 :

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

그리고이 같은 didUpdateToLocation을 구현 :

답변

4

당신은 아마 알다시피,이 초기화하고 위치 관리자를 시작하는 코드 위치에 대한 업데이트가 있습니다. 시스템이 위치 변경을 감지하지 못하면 didUpdateToLocation은 호출되지 않습니다. 당신이 할 수있는 유일한 방법은 당신이 가장 높은 정확도를 제공하기 위해 내가 예제에서했던 것처럼 distanceFilterdesiredAccuracy을 설정하는 것입니다. 대신 더 정확성을 kCLLocationAccuracyNearestTenMeters의

업데이트

사용 kCLLocationAccuracyBest.

+0

답변 해 주셔서 감사합니다. 나는 바로 그것을 테스트 할 수 있도록 userLocation을 패치하는 방법을 생각할 수 없었다. 방금 ​​거리 경고를 구현하고 누군가가 테스트 해 보도록하겠습니다. 실제로 시간 간격을 사용하는 것보다 낫습니다. 정확도는 최상이고 필터는 10m 동일하지만, 그렇지 않은 경우 왜 안됩니까? (알고 계시다면) –

+0

맞습니다. kCLLocationAccuracyBest가 더 좋습니다. 확실히 kCLDistanceFilterNone이 최고입니다. kCLDistanceFilterNone을 사용할 때 문서에 모든 알림이 표시됩니다. –

+0

글쎄, 실제로 나는 10 미터를 움직이는 것이 너무 자주 업데이트하지 않고 (또는 서있을 때, 둘 다 '최고/없음'으로 설정하면 얻을 수있는) 충분한 업데이트에 대한 좋은 기준이라고 생각했습니다. 그래서 저는 "정확도 = 최상 + 필터 = 10m"과 "정확도 = 10m + 필터 = 없음"중 가장 적절한 결과를 주 었는지 궁금해했습니다. :) –