이는 지오 펜스를 생성하는 내 코드입니다 :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 외부에있는 위임자 메소드에서 응답합니다.
이 시나리오를 해결할 수 있습니까?
지역이 생성 된 값과 테스트 데이터의 위치를 온전하게 점검 했습니까? 2KM 해봤습니까? – Wain
예, 테스트 데이터가 모두 정확합니다. 제 질문을 수정했습니다. 응용 프로그램의 스크린 샷을 추가했습니다. CLRegion Radius와 동일한 100m 반경의 오버레이를 만들었습니다. 시뮬레이션 된 현재 위치를 확인하십시오. 그것은 나의 geofence에서 약 1KM 떨어져있는 gpx 파일입니다. 하지만 CLLocationManeger의 -didEnterRegion과 -didExitRegion은 내 지오 펜스 (반지름이 100m에 불과 함) 내에 있음을 알려줍니다. 이견있는 사람? –
오버레이의 반경이 모니터링되는 지역에서 왔습니까? 시뮬레이션 할 때 이런 종류의 문제를 보지 못했습니다. 따라서 질문의 정확성을 확인하십시오. – Wain