Подтвердить что ты не робот

Листовка: как добавить текстовую метку к значку пользовательского маркера?

Можно ли добавить текст к пользовательскому значку маркера? Я хочу избежать необходимости редактировать значок в редакторе изображений только для добавления текста.

Я создал свой собственный знаковый маркер так:

var airfieldIcon = L.icon({
        iconUrl: 'images/airfield.png',
        iconSize: [48,48]
});

var airfield = L.geoJson (airfield, {
    pointToLayer: function(feature,latlng){
        return L.marker(latlng, {
            icon: airfieldIcon
        })
    }
}).addTo(map);

Как добавить текст "Банфский аэродром" в качестве ярлыка к этому значку? Самый простой и эффективный способ использования редактора изображений? если так, я сделаю этот метод, но задаюсь вопросом, был ли лучший способ. Спасибо!

4b9b3361

Ответ 1

Вы можете использовать L.DivIcon:

Представляет облегченный значок для маркеров, в котором вместо изображения используется простой элемент div.

http://leafletjs.com/reference.html#divicon

Поместите изображение и текст в HTML, добавьте немного CSS, чтобы он выглядел так, как вы хотите, и все готово

new L.Marker([57.666667, -2.64], {
    icon: new L.DivIcon({
        className: 'my-div-icon',
        html: '<img class="my-div-image" src="http://png-3.vector.me/files/images/4/0/402272/aiga_air_transportation_bg_thumb"/>'+
              '<span class="my-div-span">RAF Banff Airfield</span>'
    })
});

Другой вариант - использовать плагин Leaflet.Label:

Leaflet.label - это плагин для добавления меток к маркерам и фигурам на картах с буклетами.

Ответ 2

Как и в листовке версии 1.0.0, вы можете добавить метку без использования плагина (плагин был перенесен в функциональность ядра).

Пример:

var marker = L.marker(latlng)
    .bindTooltip("Test Label", 
    {
        permanent: true, 
        direction: 'right'
    }
);

Это дает маркер на карте с меткой "Test Label", которая всегда отображается справа от значка маркера.