如何确定当前用户位置是否在我的MKCoordinateRegion内?

时间:2012-02-01 04:39:08

标签: ios5 gps mapkit userlocation mkcoordinateregion

我有一个我确定的坐标区域包含我想要为我的应用显示的限制。我把它设置为MKCoordinateRegion,中心点为lat,经度和跨度。如何确定当前userLocation是否在我的坐标区域内?

3 个答案:

答案 0 :(得分:9)

使用地图rects。这是使用地图当前可见矩形的示例。关于您的问题,您可以先使用convertRegion:toRectToView:将您的区域转换为MKMapRect

MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);

答案 1 :(得分:2)

Swift 3版第一反应者的答案:

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

几乎一样。该API还没有Swift-ified(即,更新以符合Swift API设计指南)。这真的应该 ...

let userPoint = mapView.userLocation.coordinate.mapPoint
let inside = mapView.visibleMapRect.contains(userPoint)

答案 2 :(得分:0)

如果使用光线投射算法通过多边形给出区域,则有一个简单的解决方案可以确定您的区域内是否有一个点:请参阅此处http://en.wikipedia.org/wiki/Point_in_polygon

作为起点,请使用保证在您所在地区之外的地点,例如: (地理)北极。