2014-02-20 2 views
2

У меня есть некоторые ломаные (массив координат, представляющий маршрут)Detect, если полилиния пересекает многоугольник

У меня также есть полигон (а rectanble, изготовленный из 4-х координатов)

Они используются в Google Maps (API v3).

-

мне нужно знать, если какие-либо из theese полилинии пересекает многоугольник, и если да, ломаные которым (s) пересекает?

Я надеюсь на функцию, я могу отправить объект polygon и массив полилинии, чтобы он возвращал список пересекающихся полилиний.

Например, чтобы назвать как:

var result = checkForIntersects(radiusPoly, polylines); 

В результате может быть «0,1 не», если первые два полилинии пересекает, или «» если ни пересекает.

надеюсь, что имеет смысл :-)

Пример полигона и ломаные доступны здесь: JSfiddle (Обновление 2018-02-01: К сожалению, я заметил, что мой пример больше не работает, но координаты есть.. Лучше, чем ничего, я думаю.)

ответ

0

Из того, что я могу сказать, в настоящее время нет способа добиться того, на что я надеялся.

Перекрывающиеся многоугольники могут быть обнаружены, но полилинии только в том случае, если одна из точек находится внутри полигона.

Вкратце: я не мог найти способ определить, была ли полилиния с точками по обе стороны многоугольника, была «касанием» многоугольника.

Обходной путь мог заключаться в том, чтобы взять каждую «ногу» полилинии, разделить на несколько строк (например, в зависимости от требуемого разрешения) и проверить каждую из этих точек, чтобы увидеть, находятся ли они внутри многоугольник.

Это, однако, было очень медленным для того, что мне было нужно, поскольку это привело бы к тому, что многие тысячи точек были проверены индивидуально.

Также это скорее хак, чем решение, и я не одобряю это в решении для производства.