Tôi có một vùng tọa độ mà tôi đã xác định chứa các giới hạn của những gì tôi muốn hiển thị cho ứng dụng của mình. Tôi đã thiết lập này như là một MKCoordinateRegion với điểm trung tâm lat, kinh độ và một khoảng. Làm cách nào để xác định liệu userLocation hiện tại có nằm trong vùng phối hợp của tôi không?Làm cách nào để xác định liệu vị trí người dùng hiện tại có nằm trong MKCoordinateRegion của tôi không?
Trả lời
Sử dụng bản đồ. Dưới đây là một ví dụ bằng cách sử dụng trực quan hiện tại của bản đồ. Liên quan đến câu hỏi của bạn, bạn có thể sử dụng convertRegion:toRectToView:
để trước tiên chuyển đổi khu vực của mình thành một MKMapRect
trước.
MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate);
MKMapRect mapRect = mapView.visibleMapRect;
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint);
Có một giải pháp đơn giản để xác định xem một điểm nằm bên trong khu vực của bạn nếu khu vực này được đưa ra bởi một đa giác bằng cách sử dụng thuật toán đúc ray: Xem ở đây http://en.wikipedia.org/wiki/Point_in_polygon
Như một điểm khởi đầu sử dụng một vị trí đảm bảo được bên ngoài khu vực của bạn, ví dụ (cực địa lý) cực bắc.
Tôi thực sự đang tìm kiếm thứ gì đó trong MapKit sẽ làm việc cho tôi! –
Swift 3 phiên bản của câu trả lời firstresponder 's:
let userPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate)
let mapRect = mapView.visibleMapRect
let inside = MKMapRectContainsPoint(mapRect, userPoint)
Khá nhiều như vậy. API này chưa được Swift-ified (tức là, cập nhật để phù hợp với các nguyên tắc thiết kế API Swift). Nó thực sự là nên là ...
let userPoint = mapView.userLocation.coordinate.mapPoint
let inside = mapView.visibleMapRect.contains(userPoint)
Ha, vui khi nhận được câu trả lời rất nhiều sau! Cảm ơn, một câu trả lời tốt vì vậy tôi sẽ đi trước và cung cấp cho bạn nhãn hiệu - convertRegion: toRectToView là thứ tôi đã bỏ lỡ. –