Клуб API Карт

Заливку для полигона при непоследовательных точках координат

atach
10 марта 2014, 12:33

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

Т.е. грубо говоря вот так http://goo.gl/3Glmdr 

10 комментариев
Подписаться на комментарии к посту

Не загружается картинка по ссылке, а из текста не очень понятно, о чем речь.

Странно вроде бы картинка загружается ....

Вот прямой линк на неё: Пример картинки

 

Т.е. грубо говоря все полигоны у меня переварачиваются. т.к. данные от заказчика пришли в таком виде. Точки не последовательны друг за другом.

Точки идут друг за другом, просто прямоугольник имеет самопересечения. Апи умеет отрабатывать такие кейсы - можно посмотреть на пример в песочнице http://api.yandex.ru/maps/jsbox/polygon

Если речь идет о fillRule, то не помагло ...

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

или нет

fillRule как раз правило, по которому определяется заливка самопересечений полигона.

Вы можете прислать код, где вы создаете нужный полигон, а он красится не так как надо?

Если просто показать на примере из песочнице, то вот 

 http://jsfiddle.net/atach/8nphh/ 

Первый полигон с последовательными точками, а второй нет ...

 

P.S. Возможно я просто не правильно сформулировал свой вопрос

Я кажется начинаю догадываться.

Вам надо, чтобы полигон был залит на кусками, а полностью?

:) да всё верно ... Нужно что бы он заливался полностью с точками которые идут не попорядку.

 

Ваша задача называется "поиск выпуклой оболочки для множества точек". В апи нет встроенных методов для ее решения.

Можете поискать на просторах интернета реализацию на JavaScript или еще на чем.

Вот здесь есть решение на паскале http://gospodaretsva.com/urok-35-postroenie-vypukloj-obolochki.html

 

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

Ок... Спасибо большое ...