Как добавить расширенный слой на панель инструментов? - PullRequest
0 голосов
/ 19 декабря 2018

Я использую Leaflet и пытаюсь расширить Polyline и поместить кнопку для этого расширенного слоя на L.DrawToolbar.Панель инструментов может успешно отображать кнопки для предварительно упакованных типов слоев, например, Polyline, Polygon, Rectangle, Circle.Я создал свою расширенную полилинию, чтобы у нее было подходящее имя объекта и соответствующий ТИП.Это выглядит так:

    L.Draw.MeasurementLine = L.Draw.Polyline.extend({
    statics: {
        TYPE: 'measurementLine'
    },
    // @method initialize(): void
    initialize: function (map, options)
    {
        // if touch, switch to touch icon
        if (L.Browser.touch)
        {
            this.options.icon = this.options.touchIcon;
        }

        // Need to set this here to ensure the correct message is used.
        this.options.drawError.message = "";

        // Merge default drawError options with custom options
        if (options && options.drawError)
        {
            options.drawError = L.Util.extend({}, this.options.drawError, options.drawError);
        }

        // Save the type so super can fire, need to do this as cannot do this.TYPE :(
        this.type = L.Draw.MeasurementLine.TYPE;

        L.Draw.Feature.prototype.initialize.call(this, map, options);
    }
});

L.drawLocal.draw.toolbar.buttons.measurementLine = 'Draw a measurement line';
L.drawLocal.draw.handlers.measurementLine = {
    tooltip: {
        start: 'Click to start drawing line.',
        cont: 'Release button to finish drawing line.'
    }
};

Кажется, что прототип этого объекта не содержит почти столько же элементов, сколько прототип полилинии, из которого я пытаюсь его расширить;я неправильно его расширил?

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

    var _defaultOptions = { 
        position: 'topleft',
        draw: {
            polyline: false,
            measurementLine: {
                shapeOptions: {
                    color: SHAPE_COLOR
                }
            },
            marker: false,
            rectangle: {
                shapeOptions: {
                    color: SHAPE_COLOR
                },
                metric: false
            },
            polygon: {
                shapeOptions: {
                    color: SHAPE_COLOR
                }
            },
            circle: {
                shapeOptions: {
                    color: SHAPE_COLOR
                },
                metric: false
            }
        }
    }

    [...]

    _drawControl = new L.Control.Draw(_defaultOptions);
    _map.addControl(_drawControl);

Есть ли какие-либо другие свойства, которые мне нужно установить, в обработчиках рисования, параметры, которые я использую для панели инструментов, или свойства, которые я изменяю в моемрасширенный слой?

...