2016-04-28 4 views
3

У меня есть много GMSPolygon внутри моей карты google. Теперь я хочу проверить один конкретный многоугольник, который находится внутри (полностью внутри) любого из других полигонов. Также необходимо выяснить, какие другие полигоны пересекаются с границами этого многоугольника, и другой многоугольник, который не пересекается ни внутри данного полигона, ни покрывает этот многоугольник.Проверьте, находится ли GMSPolygon внутри другого GMSPolygon или нет

Может у кого-нибудь есть идея, как это сделать?

EDIT:

Я получил библиотека/код, чтобы сделать вышеуказанную то же самое для 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»). Итак, над библиотекой мне не подходит. –

Смежные вопросы