Как определить, находится ли текущее местоположение пользователя внутри моего MKCoordinateRegion? - PullRequest
7 голосов
/ 01 февраля 2012

У меня есть определенная область координат, содержащая границы того, что я хочу показать для своего приложения. Я настроил это как MKCoordinateRegion с центральной точкой широтой, долготой и пролетом. Как определить, находится ли текущее местоположение пользователя в моей области координат?

Ответы [ 3 ]

9 голосов
/ 27 марта 2012

Использование карт Вот пример использования текущего видимого прямоугольника карты. Что касается вашего вопроса, вы можете использовать convertRegion:toRectToView:, чтобы сначала преобразовать ваш регион в MKMapRect заранее.

MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);
2 голосов
/ 01 января 2017

Swift 3 версия первый ответ ответ:

let userPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate)
let mapRect = mapView.visibleMapRect
let inside = MKMapRectContainsPoint(mapRect, userPoint)

Почти то же самое.Этот API еще не был зарегистрирован в Swift (т.е. обновлен в соответствии с рекомендациями по разработке API Swift).Это действительно должно быть ...

let userPoint = mapView.userLocation.coordinate.mapPoint
let inside = mapView.visibleMapRect.contains(userPoint)
0 голосов
/ 01 февраля 2012

Существует простое решение, чтобы определить, находится ли точка внутри вашей области, если область задана многоугольником, используя алгоритм приведения лучей: См. Здесь http://en.wikipedia.org/wiki/Point_in_polygon

В качестве отправной точки используйте местоположение, которое гарантированно находится за пределами вашего региона, например, (географический) северный полюс.

...