如何确定GMSMarker是否在GMSPolygon内(iOS Google Map SDK)

时间:2014-07-18 13:49:34

标签: ios objective-c google-maps ios7

我已经从this link得到了关于苹果地图套件的相同问题的答案,但是我不知道如何检查某些位置或注释(GMSMarker)是否在Google Map SDK中的GMSPolygon中。 所以,如果有人有任何想法,请帮助我。

2 个答案:

答案 0 :(得分:13)

我自己得到了答案。

Google SDK中的GMSGeometryUtils.h文件中定义了内联函数:

//Returns whether |point|,CLLocationCoordinate2D lies inside of path, GMSPath
    BOOL GMSGeometryContainsLocation(CLLocationCoordinate2D point, GMSPath *path,
                                 BOOL geodesic);

它包含一个名为GMSGeometryContainsLocation的函数,它确定位置点是否位于多边形路径内。

if (GMSGeometryContainsLocation(locationPoint, polygonPath, YES)) {
    NSLog(@"locationPoint is in polygonPath.");
} else {
    NSLog(@"locationPoint is NOT in polygonPath.");
}

Source: GMSGeometryContainsLocation

答案 1 :(得分:0)

对于Swift 4 ,您可以使用以下扩展程序:

extension GMSPolygon {

    func contains(coordinate: CLLocationCoordinate2D) -> Bool {

        if self.path != nil {
            if GMSGeometryContainsLocation(coordinate, self.path!, true) {
                return true
            }
            else {
                return false
            }
        }
        else {
            return false
        }
    }
}

您可以像这样直接从多边形对象中调用它:

if gms_polygon.contains(coordinate: point) {
    //do stuff here
}