ios – 确定纬度/经度点是否在Mapview中的MKPolygon中?

前端之家收集整理的这篇文章主要介绍了ios – 确定纬度/经度点是否在Mapview中的MKPolygon中?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
此时,我正在试图弄清楚MKMapView上的坐标是否在提前绘制出来的纬度/经度的MKPolygon内.

我正在使用CGPathContainsPoint来确定坐标是否在地图上的多边形内,但无论我选择哪个坐标,它总是返回false.

任何人都可以解释究竟出了什么问题?下面是我在Swift中的代码.

class ViewController: UIViewController,MKMapViewDelegate

@IBOutlet weak var mapView: MKMapView!

    let initialLocation = CLLocation(latitude: 43.656734,longitude: -79.381576)
    let point = CGPointMake(43.656734,-79.381576)
    let regionRadius: CLLocationDistance = 500
    let point1 = CLLocationCoordinate2D(latitude: 43.656734,longitude: -79.381576)

    var points = [CLLocationCoordinate2DMake(43.655782,-79.382094),CLLocationCoordinate2DMake(43.657499,-79.382310),CLLocationCoordinate2DMake(43.656656,-79.380497),CLLocationCoordinate2DMake(43.655782,-79.382094)]

    override func viewDidLoad() {
        super.viewDidLoad()

        centerMapOnLocation(initialLocation)

        let polygon = MKPolygon(coordinates: &points,count: points.count)
        mapView.addOverlay(polygon)

        var annotation = MKPointAnnotation()
        annotation.coordinate = point1
        annotation.title = "Test"
        annotation.subtitle = "Test"

        mapView.addAnnotation(annotation)
        self.mapView.delegate = self

    }

    func centerMapOnLocation(location: CLLocation) {
        let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate,regionRadius * 2.0,regionRadius * 2.0)

        mapView.setRegion(coordinateRegion,animated: true)
    }

    func mapView(mapView: MKMapView!,rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
        if overlay is MKPolygon {
            let polygonView = MKPolygonRenderer(overlay: overlay)
            polygonView.strokeColor = UIColor.redColor()

            if  CGPathContainsPoint(polygonView.path,nil,CGPointMake(43.656734,-79.381576),true) {
                print("True!!!!!")
            } else {
                println("False")
            }

            return polygonView
        }
        return nil
    }

解决方法

针对Swift 3进行了更新
let polygonRenderer = MKPolygonRenderer(polygon: polygon)
let mapPoint: MKMapPoint = MKMapPointForCoordinate(coordinate)
let polygonViewPoint: CGPoint = polygonRenderer.point(for: mapPoint)

if polygonRenderer.path.contains(polygonViewPoint)
{
    print("Your location was inside your polygon.")
}
原文链接:https://www.f2er.com/iOS/334555.html

猜你在找的iOS相关文章