我有一个坐标区域,我已经确定它包含了我想为应用程序显示的内容的限制。我已经将其设置为中心点为纬度、经度和跨度的MKCoordinateRegion。如何确定当前userLocation是否在我的坐标区域内?
使用映射矩形。下面是一个使用地图当前可见矩形的示例。关于您的问题,您可以先使用convertRegion:toRectToView:
将您所在的区域转换为MKMapRect
。
MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);
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)
如果区域是由多边形使用光线投射算法给定的,那么有一个简单的解决方案可以决定点是否在区域内:请参见此处http://en.wikipedia.org/wiki/Point_in_polygon
作为起点,使用一个保证在您所在地区之外的位置,例如(地理)北极。