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

发布于 2025-01-01 01:49:28 字数 117 浏览 1 评论 0原文

我有一个坐标区域,我已确定该区域包含我想要为我的应用程序显示的内容的限制。我已将其设置为具有中心点纬度、经度和跨度的 MKCooperativeRegion。如何确定当前 userLocation 是否在我的坐标区域内?

I have a coordinate region that I have determined contains the limits of what I want to show for my app. I have set this up as an MKCoordinateRegion with center point lat, longitude and a span. How do I determine if the current userLocation is inside of my coordinate region?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冬天旳寂寞 2025-01-08 01:49:28

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

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

Use map rects. Here's an example using the map's current visible rect. With regards to your question, you could use convertRegion:toRectToView: to first convert your region to a MKMapRect beforehand.

MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);
风苍溪 2025-01-08 01:49:28

Swift 3 版本的 firstresponder 的回答:

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

几乎一样。该 API 尚未经过 Swift 化(即更新以符合 Swift API 设计指南)。确实应该是......

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

Swift 3 version of firstresponder's answer:

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

Pretty much the same. This API has not been Swift-ified (i.e., updated to conform to the Swift API design guidelines) yet. It really should be...

let userPoint = mapView.userLocation.coordinate.mapPoint
let inside = mapView.visibleMapRect.contains(userPoint)
昇り龍 2025-01-08 01:49:28

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

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

There is a simple solution to decide if a point is inside your area if the area is given by a polygon using the ray casting algorithm: See here http://en.wikipedia.org/wiki/Point_in_polygon

As a starting point use a location guaranteed to be outside your region, e.g. (geographic) north pole.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文