Клуб API Карт

Заливка полигона. АПИ 2.0

Пост в архиве.

Добрый день. 

Геометрию полигона создаю на основе строки закодированных в Base64 координат.

Полигон отрисовывается. Не происходит заливка. Использую режим  coordorder=longlat. 

С теми же опциями, если геометрию задать через координаты, заливка производится.

В чем может быть проблемма ?

5 комментариев

Дайте ссылку на страницу с проблемой, либо сделайте пример на jsfiddle.net

AttLatCode="5tU5AjAhVQOY5AQA_XwAADyhAgBZTP7_Lsb-_xc3___oQv__5lv__1Xg_v_pIAAAwoIAACK-AAA4Jf7_qOb-_9tu_f_E0AAA7Hn__zYNAgAAAAAAAAAAAAAAAAAAAAAA";

geometry = ymaps.geometry.LineString.fromEncodedCoordinates(AttLatCode);

var Polygon = new ymaps.Polygon(geometry,

 {},

 {

 fill: true,

 fillColor: '#FF0000',

 opacity: 0.5,

 strokeWidth: '2',

 strokeColor: '#550000'  }              

);

map.geoObjects.add(Polygon); 

Контур замкнут. Цвет контура отрабатывает.

Если у многоугольника координаты первой и последней вершин не совпадают, то при создании этого многоугольника добавится еще одна вершина, совпадающая с первой.

Вот этот постулат в случае с кодировкой в Base64 координат тоже не выполнился. 

ymaps.Polygon это просто хелпер к ymaps.GeoObject, который умеет автоматически приводить геометрию из "координат" в геометрию.

Тут вы уже задаете готовую, и ее тип - Линия.

Итого порождается обьект "Линия".

Можно new ymaps.Polygon([geometry.getCoordinates()],... и будет работать.

А вот просто изменить тип из  fromEncodedCoordinates нельзя, так как у полигона немного другой формат - много контуров.

Да. Заливка происходит. Большое спасибо.