Клуб API Карт

Рисование полигонов при помощи YMaps.Polygon. Как это сделать правильно?

oleglark
23 июля 2009, 12:06

Подскажите, как правильно рисовать полигоны? Мне необходимо по клику на карте создавать полигон с одной вершиной в месте клика, затем включить режим рисования и продолжать построение полигона. На данный момент, мне необходимо дополнительно кликать по созданой вершине и нажимать на "Продолжить" в выпадающем меню чтобы включился режим рисования. Функции типа startDraw() я не нашёл. Пробовал использовать инициацию события:

YMaps.Events.notify(polygon,polygon.Events.StartDrawing);

но это не помогло. Вот какой код я использую:


var listener = YMaps.Events.observe(map,map.Events.Click, function (map, mEvent) {
                if(mEvent.getGeoPoint())
                {
                    listener.cleanup();
                   
                    var style = new YMaps.Style("default#greenPoint");
                    style.polygonStyle = new YMaps.PolygonStyle();
                    style.polygonStyle.fill = 1;
                    style.polygonStyle.outline = 1;
                    style.polygonStyle.strokeWidth = 3;
                    style.polygonStyle.strokeColor = "ff000099";
                    style.polygonStyle.fillColor = "ff000044";
                    YMaps.Styles.add("polygon#Example", style);

                    polygon = new YMaps.Polygon([mEvent.getGeoPoint()], {
                        style: "polygon#Example",
                        hasHint: 0,
                        hasBalloon: 0
                    });
                   
                    map.addOverlay(polygon);
                    polygon.startEditing();

                    YMaps.Events.notify(polygon,polygon.Events.StartDrawing);
                }
            });

5 комментариев
Подписаться на комментарии к посту
polygon.setEditingOptions({drawing: true}) подробнее про опции - http://api.yandex.ru/maps/jsapi/doc/ref/reference/polygoneditingoptions.xml В принципе можно самому не слушать клик по карте, просто создаете пустой полигон, и включаете редактирование с включенным рисованием.
каким образом это сделать?

        var polygon = new YMaps.Polygon([]);
        map.addOverlay(polygon);
        polygon.StartDrawing();
        polygone.StartEditing();

так не получается!
Это потому что метода StartDrawing не существует.

var polygon = new YMaps.Polygon([]);
map.addOverlay(polygon);
polygon.setEditingOptions({drawing: true});
polygon.startEditing()
зачем вы делаете YMaps.Events.notify(polygon,polygon.Events.StartDrawing); ?
Не знал про опции...не дочитал вернее мануал. Теперь понятно что нет необходимости в notify. Спасибо за ответ!