Я использую 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);
Есть ли какие-либо другие свойства, которые мне нужно установить, в обработчиках рисования, параметры, которые я использую для панели инструментов, или свойства, которые я изменяю в моемрасширенный слой?