2014-03-06 6 views
1

이는 지오 펜스를 생성하는 내 코드입니다 :CLRegion의 반경을 올바르게 설정하는 방법은 무엇입니까?

Geofence *geofence = [[Geofence alloc] init]; 
[geofence setRadius:100.0]; 
[geofence setIdentifier: @"Fence1"]; 
[geofence setLocation:currentlocation]; 


CLRegion *region1 = [[CLCircularRegion alloc] initWithCenter:[geofence.location coordinate] 
               radius:geofence.radius 
               identifier:geofence.identifier]; 

region1.notifyOnEntry=YES; 
region1.notifyOnExit=YES; 
[self.locationManager startMonitoringForRegion:region1]; 

내가 말할 수있는, 위의 코드가 생성 된 지오 펜스를 의미 작동합니다. 하지만 내가 겪어 본 문제가 있습니다.

저는 현재 위치의 시뮬레이션에 사용할 .gpx 파일이 있습니다. 지역/지오 펜스의 중심으로부터의 거리는 55m, 90m, 150m, 200m, 300m, 500m입니다. , 1Km, 5Km 및 10Km.

geofence의 중심으로부터의 거리가 55m, 90m, 150, 200m, 300m, 500m, 1km 인 gpx 파일을 시뮬레이트 할 때 내 지오 펜스 반지름이 실제로 100m이 아닌 것 같습니다. LocationManager -didEnterRegion-didExitRegion의 델리게이트 메소드는 반경이 "100m"인 지오 펜스 내에 있다고 응답합니다.

내 지오 펜스 센터에서 거리가 5km와 10km 인 gpx 파일 만이 Geofence 외부에있는 위임자 메소드에서 응답합니다.

이 시나리오를 해결할 수 있습니까?

enter image description here

+0

지역이 생성 된 값과 테스트 데이터의 위치를 ​​온전하게 점검 했습니까? 2KM 해봤습니까? – Wain

+0

예, 테스트 데이터가 모두 정확합니다. 제 질문을 수정했습니다. 응용 프로그램의 스크린 샷을 추가했습니다. CLRegion Radius와 동일한 100m 반경의 오버레이를 만들었습니다. 시뮬레이션 된 현재 위치를 확인하십시오. 그것은 나의 geofence에서 약 1KM 떨어져있는 gpx 파일입니다. 하지만 CLLocationManeger의 -didEnterRegion과 -didExitRegion은 내 지오 펜스 (반지름이 100m에 불과 함) 내에 있음을 알려줍니다. 이견있는 사람? –

+0

오버레이의 반경이 모니터링되는 지역에서 왔습니까? 시뮬레이션 할 때 이런 종류의 문제를 보지 못했습니다. 따라서 질문의 정확성을 확인하십시오. – Wain

답변

0

나는 문제가 당신이 지금까지 자신의 중심 좌표에 관한 한 당신의 지오 펜스를 초기화하는 데 사용하는 것과 함께 지역을 초기화하기 위해 동일한 변수를 사용하고있을 수 있습니다 생각합니다. 따라서 사람은 항상 그것을 다른 사람 안에서 생각합니다.