Проблема с географическим ограждением для iPhone

#iphone #ios4 #geolocation #location

#iPhone #ios4 #геолокация #Расположение

Вопрос:

Как реализовать гео-ограждение с iPhone.

Доступна ли какая-либо библиотека для реализации?

Я хочу знать, находится ли iPhone внутри многоугольника или круга, определенного сервером, или СНАРУЖИ, поэтому, если устройство находится за пределами указанного диапазона, оно должно сообщить об этом серверу.

Как выполнить такую задачу.

Заранее спасибо

Ответ №1:

Возможно, вы захотите использовать CLLocationManager. Пожалуйста, обратитесь к CLLocationManagerDelegate. Здесь есть два метода.

 - (void)locationManager:(CLLocationManager *)manager
        didEnterRegion:(CLRegion *)region;


- (void)locationManager:(CLLocationManager *)manager
    didExitRegion:(CLRegion *)region;
  

Ответ №2:

Существует несколько способов вычислить, находитесь ли вы внутри многоугольника или снаружи. Проще всего использовать метод литья лучей, как подробно описано в этой функции У. Рэндольфа Франклина:

 int pnpoly(int nvert, float *vertx, float *verty, float testx, float testy)
{
  int i, j, c = 0;
  for (i = 0, j = nvert-1; i < nvert; j = i  ) {
    if ( ((verty[i]>testy) != (verty[j]>testy)) amp;amp;
     (testx < (vertx[j]-vertx[i]) * (testy-verty[i]) / (verty[j]-verty[i])   vertx[i]) )
       c = !c;
  }
  return c;
}
  

Для тестирования agsint внутри или за пределами круга просто рассчитайте свое расстояние до центра круга и определите, меньше ли оно радиуса, если оно.

Ответ №3:

Ага ,

У меня есть решение

Вот пример кода для того же самого. В нем показан регион и реализация методов, как найти вход — выход из региона.