2016-04-28 10 views
3

私のGoogleマップには多くのGMSPolygonがあります。今私はそれが他のポリゴンの内部(完全に内部)である1つの特定のポリゴンをチェックしたいと思います。また、他のポリゴンがこのポリゴンの境界線と交差しているか、交差していない他のポリゴン、特定のポリゴンの内側もこのポリゴンもカバーしていないことを調べる必要があります。GMSPolygonが他のGMSPolygonの中にあるかどうかを確認してください。

どのようにすればいいですか?

編集:私はMKPolygonため、上記と同じことを行うために、ライブラリ/コードを持っ

、あなたはここでそれを上に見ることができます:https://github.com/geeksweep/MKPolygon-GSPolygonIntersections

さて、私は全体GMSPolygonを変換する必要があることを考えていますMKPolygonに追加し、このライブラリのコードを適用して必要な結果を得ます。しかし、これはこれを行うための適切な方法ではないと私は思う。非常に簡単な方法でこれを行う考えがありますか?

答えて

1

の境界線と交差しているかを確認するために、私はそれはないと思う、一つの解決策を見つけましたそれははるかに適切ですが、私が見つけた他の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 
} 
0

あなたはこのライブラリを使用することができます。

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

他のポリゴンはたくさんのものを検索した後、あなたのポリゴン

+0

申し訳ありませんが、私はiOS(「GMSPolygon」、「iOS」タグも参照)の解決策が必要です。だから、上記のライブラリは私には適していません。 –

関連する問題