Как правильно установить радиус 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 (в которых я буду использовать для моделирования моего текущего местоположения), их расстояния от центра региона/геозоны следующие: 55 м, 90 м, 150 м, 200 м, 300 м, 500 м, 1 км, 5 км и 10км.

Моя проблема в том, что кажется, что мой радиус геозоны на самом деле не 100 м, потому что, когда я моделирую файлы gpx, расстояние от центра геозоны которых составляет 55 м, 90 м, 150, 200 м, 300 м, 500 м, 1 км. Методы делегата LocationManager -didEnterRegion и -didExitRegion отвечают, что я нахожусь в пределах своей геозоны, радиус которой составляет всего «100 м».

Только файлы gpx с расстояниями от моего центра геозоны, которые составляют 5 км и 10 км, отвечают из указанных методов делегата, что я нахожусь за пределами геозоны.

Можете ли вы помочь мне решить этот сценарий, ребята?

введите здесь описание изображения


person Josh Byanec McFergan    schedule 06.03.2014    source источник
comment
Вы проверили вменяемость значений, с которыми создается регион, и местоположения ваших тестовых данных? Вы пробовали 2 км?   -  person Wain    schedule 06.03.2014
comment
Да, все тестовые данные верны, я отредактировал свой вопрос. Добавил скриншот приложения. Я создал оверлей с радиусом 100 м, таким же значением радиуса CLRegion. Посмотрите на смоделированное текущее местоположение. Это файл gpx, который находится примерно в 1 км от моей геозоны. Но параметры -didEnterRegion и -didExitRegion CLLocationManeger говорят мне, что я нахожусь в пределах своей геозоны (радиус которой составляет всего 100 м). Есть предположения?   -  person Josh Byanec McFergan    schedule 06.03.2014
comment
Радиус вашего наложения исходил из контролируемого региона? Я не видел такой проблемы при моделировании, поэтому вопросы проверки работоспособности...   -  person Wain    schedule 06.03.2014
comment
Поскольку геозона в iOS определяется как воображаемая круглая область на вашей карте, просто для визуального представления я создал наложение с тем же значением (те же координаты центра и то же значение радиуса), что и у моего CLRegion, которое равно 100.   -  person Josh Byanec McFergan    schedule 06.03.2014


Ответы (1)


Я думаю, проблема может заключаться в том, что вы используете те же переменные для инициализации своего региона, что и те, которые вы используете для инициализации своей геозоны, в отношении их центральных координат. Таким образом, одно всегда думает, что оно внутри другого.

person uofc    schedule 06.05.2014