2015-09-24 3 views
3

Использование leaflet.draw, я экземпляр drawControl I с:Как стилизовать divicons в режиме редактирования leaflet.draw?

scope.drawOptions = { 
    position: 'topright', 
    draw: { 
    polyline: false, 
    polygon: { 
     icon: new L.DivIcon({ 
     iconSize: new L.Point(16, 16), 
     className: 'leaflet-div-icon leaflet-editing-icon my-own-class' 
     }), 
     allowIntersection: false, 
     drawError: { 
     color: '#5878B8', 
     message: '<strong>Oh snap!<strong> you can\'t draw that!' 
     }, 
     shapeOptions: shapeOptions 
    }, 
    circle: false, // Turns off this drawing tool 
    rectangle: false, 
    marker: false 
    }, 
    edit: { 
    featureGroup: self.featureGroup 
    } 
}; 
scope.drawControl = new L.Control.Draw(scope.drawOptions); 
map.addControl(scope.drawControl); 

Но стиль возвращается к «по умолчанию» при входе в режим редактирования. Я пытался бороться с этим:

map.on('draw:editstart', function(e) { 
    scope.drawControl.setDrawingOptions({ 
    polygon: { 
     icon: new L.DivIcon({ 
     iconSize: new L.Point(16, 16), 
     className: 'leaflet-div-icon leaflet-editing-icon my-own-class' 
     }) 
    }, 
    }) 
}); 

Но это не помогло. Какие-либо предложения?

Там закрытый GitHub вопрос об этом, но я не мог понять: https://github.com/Leaflet/Leaflet.draw/issues/48#issuecomment-141546589

Я создал этот jfiddle, если кто хочет поиграть: http://jsfiddle.net/markdickersonvt/mwz7pg2n/

ответ

5

Как this?

В принципе, я просто расширить класс L.Edit.Poly

L.Edit.Poly = L.Edit.Poly.extend({ 
    options : { 
     icon: new L.DivIcon({ 
      iconSize: new L.Point(20, 20), 
      className: 'leaflet-div-icon leaflet-editing-icon my-own-icon' 
     }) 
    } 
}); 

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

+0

Спасибо! Это именно то, что я искал. Есть ли хороший способ сделать это для непрозрачности «средних маркеров»? Прозрачность устанавливается в функции _createMiddleMarker [L.Edit.Poly Class] (https://github.com/Leaflet/Leaflet.draw/blob/1f49919df00467a234a9ed94c93bbfa9d804f6ec/src/edit/handler/Edit.Poly.js). Я попытался расширить класс 'L.Edit.Poly 'и посмотреть, могу ли я переопределить эту функцию, но у меня появились некоторые ошибки. –

Смежные вопросы