2015-04-29 2 views
1

Я создал пользовательский маркер и добавить его в панели управления Жеребьевкой так:Перерисовка пользовательских маркеров в листовке

L.Draw.myMarker = L.Draw.Marker.extend({ 
    initialize : function(map, options) { 
     this.type = 'myMarker'; 
     L.Draw.Feature.prototype.initialize.call(this, map, options); 
    } 
}); 

Теперь я могу нарисовать этот маркер на моей карте от моей панели управления ничьим.

Требования:

Далее мне нужно сохранить детали всех myMarker в базе данных (LatLong, опционы и т.д.). Позже мне нужно перерисовать одни и те же маркеры, извлекая данные из БД и затем отображая их на карте.

Проблема:

я нашел только одно решение, чтобы повторно создать маркер, который является:

//Step 1. Extending marker with Marker class 
L.myMarker = L.Marker.extend({}); 
//Step 2. Recreating marker with the persisted data 
L.myMarker([lat, long], {}).addTo(map); 

Но я хочу, чтобы создать экземпляр L.Draw.myMarker, что я нарисованной ранее панели инструментов.

Так что мне нужно что-то вроде этого L.Draw.myMarker([lat, long], {}).addTo(map);

+0

вам действительно нужны пользовательские функции маркеров делать, или просто пользовательский значок для маркеров? – snkashis

+0

Я создаю пользовательские маркеры с разными типами. Поэтому мне нужна вся функциональность для создания всплывающих окон на маркеры и все такое. Я могу создавать маркеры и сохранять их положения и детали lat lng в db, но я не могу их перерисовать на основе загрузки карты (из db) из-за вышеупомянутой проблемы. –

+0

Различные типы, что означает что? Я спрашиваю, потому что я думаю, что вы создаете дополнительную сложность, где вам нужны только пользовательские функции 'L.icon', которые поддерживаются как Leaflet.Draw, так и Leaflet сами по себе .. – snkashis

ответ

1

Учитывая ваши обстоятельства, я думаю, что вы будете иметь, чтобы дублировать некоторые из пользовательской логики маркеров в то, что простирается от L.Marker, чтобы иметь возможность использовать его вне листовку .draw контекст ... потому что L.Draw.Marker простирается от L.Draw.Feature (https://github.com/Leaflet/Leaflet.draw/blob/master/src/draw/handler/Draw.Marker.js#L1), в то время как маркер Leafet простирается от L.Layer (https://github.com/Leaflet/Leaflet/blob/master/src/layer/marker/Marker.js#L5)..So, что не совсем ясно, дерева наследования быть переопределение вещи с между этими двумя.

+0

Так есть ли альтернатива? Или единственная альтернатива, которую я предоставил выше в разделе решения? Пожалуйста, предложите. Спасибо заранее –

+0

Я действительно не вижу альтернативы. Если у Leaflet.Draw были варианты для нескольких кнопок для одного и того же базового типа (но другого класса), то все могло бы быть иначе. – snkashis

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