HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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.")
}

大佬总结

以上是大佬教程为你收集整理的ios – 确定纬度/经度点是否在Mapview中的MKPolygon中?全部内容,希望文章能够帮你解决ios – 确定纬度/经度点是否在Mapview中的MKPolygon中?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。