检查GMSPolygon是否在其他GMSPolygon内

时间:2016-04-28 11:36:11

标签: ios google-maps polygon intersection gmsmapview

我的谷歌地图中有很多GMSPolygon。现在我想检查一个特定的多边形,它是内部的(完全在里面)任何其他多边形。还需要找出哪些其他多边形与此多边形的边界相交,以及其他多边形既不相交,也不在给定多边形内,也不覆盖此多边形。

有谁知道如何做到这一点?

修改

我得到了库/代码来为MKPolygon做同样的事情,你可以在这里看到它:https://github.com/geeksweep/MKPolygon-GSPolygonIntersections

现在,我想我应该将整个GMSPolygon转换为MKPolygon并应用此库的代码来获得所需的结果。但我认为这不是正确的方法。有没有人有任何想法以非常简单的方式做到这一点。

2 个答案:

答案 0 :(得分:2)

在搜索了很多东西之后,我找到了一个解决方案,我认为这不是那么合适,但仍然比我找到的其他3-4个解决方案更好。如果有人找到更好的解决方案,告诉我,如果我发现它们更好,更合适,我会接受那个并且我的代码也会改变。是的,我使用以下代码来做到这一点。

GMSPath *path1=polygon1.path, *path2=polygon2.path;
BOOL flag1= NO;
BOOL flag2= NO;
for (int i=0; i<path1.count; i++)
{
    if (GMSGeometryContainsLocation([path1 coordinateAtIndex:i], path2, YES)==false)
    {
        flag1 = true;
    }

    if (GMSGeometryIsLocationOnPath([path1 coordinateAtIndex:i], path2, YES)==true)
    {
        flag2 = true;
    }
}

if (flag1==false)
{
    NSLog(@"polygon1 is fully inside polygon2");
}
else if (flag2 == true)
{
    NSLog(@"polygon1 intersects with polygon2");
}
else
{
    //Do the above procedure again just by switching path1 and path2
    //and at end you can find that is polygon2 is inside polygon1 or not, 
    //and if it is not, then this means both polygon1 and polygon2 are distinct
    //then neither intersects, nor inside each other
}

答案 1 :(得分:0)

您可以使用此库:

http://sourceforge.net/projects/polyclipping/

查看哪些其他多边形与多边形的边界相交