Клуб API Карт

Внутренний контур многоугольника

goodrus
21 января 2012, 01:04

Есть в PolygonOptions возможность задавать массив внутренних контуров - отверстий, поле interiors. Но при попытке сделать так возникает исключение.  

Пример кода:

new YMaps.Polygon([
new YMaps.GeoPoint(x1, y1),//Внешняя вершина 1
...
new YMaps.GeoPoint(xN, yN) //Внешняя вершина N 
], { style: "polygon#Example", interiors: [

//Внутренний контур 1 

[
new YMaps.CoordVertex(new YMaps.GeoPoint(xk1, yk1)),
...
new YMaps.CoordVertex(new YMaps.GeoPoint(xkM, ykM))
],
...

//Внутренний контур Z
[
new YMaps.CoordVertex(new YMaps.GeoPoint(xk1, yk1)),
...
new YMaps.CoordVertex(new YMaps.GeoPoint(xkL, ykL))
]]
} 

 

В чем ошибка? 

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

Я сам никогда не создавал полигоны с дырками, но вроде в документации описаны аж 2 способа: 

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

Наверное это значит чтото типа такого

 

        var p = new YMaps.Polygon([                                                         new YMaps.GeoPoint(37.415797,55.853919),                                        new YMaps.GeoPoint(37.768733,55.847739),                                        new YMaps.GeoPoint(37.641017,55.591164)                                         ],                                                                              { interiors: [                                                                      // Внутренний контур 1 способ 1 (через YMaps.CoordPath)                new YMaps.CoordPath([                                                               new YMaps.CoordVertex(new YMaps.GeoPoint(37.474849,55.816049)),                    new YMaps.CoordVertex(new YMaps.GeoPoint(37.565486,55.822235)),                    new YMaps.CoordVertex(new YMaps.GeoPoint(37.516047,55.760337))                ]),                                                                                                                                                           // Внутренний контур 2, способ 2 (через массив координат)                                                          [                                                                                   new YMaps.GeoPoint(37.612178,55.692135),                                        new YMaps.GeoPoint(37.590205,55.647895),                                        new YMaps.GeoPoint(37.711055,55.640905)                                     ]                                                                           ]                                                                           });                                                                             map.addOverlay(p);

Спасибо, заработало.

Однако из xml по-прежнему не работают дырки в многоугольниках.

Пример такой





  //Список точек внешнего контура многоугольника




  //Список точек внутреннего контура многоугольника (отверстия)

 

 

Вот тут написано досадное предложение: 

В текущей версии JS API Яндекс.Карт 1.1 отверстия в многоугольниках не поддерживаются.

Это правда?

 

через YMapsML не работает