изменить значок маркера листовки

Я использую Leaflet Slider Денниса Вильгельма, чтобы отображать изменения данных на карте Leaflet.

Я пытаюсь изменить значок маркера, но не понимаю. Итак, как я могу изменить значок маркера при использовании Leaflet Slider, чтобы отображать изменения с течением времени? Какие изменения мне нужно сделать в исходном SliderControl.js?

Заранее спасибо!

Ниже приведена ссылка на код слайдера Leaflet Slider Денниса Вильгельма:

https://github.com/dwilhelm89/LeafletSlider/blob/master/SliderControl.js


person sowmyaa guptaa    schedule 11.01.2017    source источник


Ответы (4)


Вы можете создать новый класс значков, как показано ниже:

var LeafIcon = L.Icon.extend({
    options: {
       iconSize:     [38, 95],
       shadowSize:   [50, 64],
       iconAnchor:   [22, 94],
       shadowAnchor: [4, 62],
       popupAnchor:  [-3, -76]
    }
});

Затем создайте новый объект значка, как показано ниже:

var greenIcon = new LeafIcon({
    iconUrl: 'http://leafletjs.com/examples/custom-icons/leaf-green.png',
    shadowUrl: 'http://leafletjs.com/examples/custom-icons/leaf-shadow.png'
})

Теперь вы можете разместить над значком маркера на карте, как показано ниже:

L.marker([51.5, -0.09], {icon: greenIcon}).addTo(map);

Дополнительную информацию можно найти в документе.

Для управления слайдером вам нужно создать два изображения:

(1) Marker Icon [ Use name: marker-icon.png ]
(2) Marker Icon Shadow [ Use name: marker-shadow.png ]

После этого вы можете указать путь к изображению по умолчанию, как показано ниже:

L.Icon.Default.imagePath = "Url to the image folder"; // This specifies image path for marker icon. 
e.x L.Icon.Default.imagePath = "http://leafletjs.com/examples/custom-icons";

Таким образом, URL-адреса значков будут такими:

Icon URL  :  http://leafletjs.com/examples/custom-icons/marker-icon.png
Shadow URL:  http://leafletjs.com/examples/custom-icons/marker-shadow.png
person Jainil    schedule 11.01.2017
comment
Фактически, если вы видите исходный файл slidercontrol.js (github.com/dwilhelm89/ LeafletSlider / blob / master /), здесь он добавляет маркер, например .. map.addLayer (_options.markers [i]); и не как L.marker ([51.5, -0.09], {icon: greenIcon}). addTo (карта); Итак, как изменить значок в map.addLayer (_options.markers [i])? - person sowmyaa guptaa; 12.01.2017

Это будут точные изменения в исходном файле slidercontrol.js

   if (this._layer) {
        var index_temp = 0;
        this._layer.eachLayer(function (layer) {

             var greenIcon = L.icon({ //add this new icon
                iconUrl: i+'.png',
                shadowUrl: 'leaf-shadow.png',

                iconSize:     [38, 95], // size of the icon
                shadowSize:   [50, 64], // size of the shadow
                iconAnchor:   [22, 94], // point of the icon which will correspond to marker's location
                shadowAnchor: [4, 62],  // the same for the shadow
                popupAnchor:  [-3, -76] // point from which the popup should open relative to the iconAnchor
            });

            options.markers[index_temp] = layer;
            options.markers[index_temp].setIcon(greenIcon); //Here set the icon to indiviual markers

            ++index_temp;
        });
        options.maxValue = index_temp - 1;
        this.options = options;
    }
person sowmyaa guptaa    schedule 13.01.2017

На всякий случай, если кому-то интересно, как это сделать в Typescript с vue2-leaflet, ниже приведен один пример кода. Вы даже можете использовать v-for на l-marker для построения нескольких маркеров за один раз:

// inside template
<l-marker :lat-lng="position"
            :icon="defaultIcon" :key="index">
            <l-icon
                :icon-size=[20,40]
                :popupAnchor= [0,0]
                :iconUrl= "'assets/logo.png'"
                :shadowUrl= "'assets/logo.png'" >
                  <v-icon medium >
                    mdi-target
                  </v-icon>
            </l-icon>
</l-marker>

// default icon in script
defaultIcon = L.icon({
      iconUrl: "https://unpkg.com/[email protected]/dist/images/marker-icon.png",
      shadowUrl: require('../static/marker.png'),
      iconSize: [20, 30],
      iconAnchor: [18, 18],
      popupAnchor: [0, -10],
      shadowSize: [0, 0],
      shadowAnchor: [10, 10]
    });
person Yogesh Vadekar    schedule 26.10.2020

person    schedule
comment
Добро пожаловать в stackoverflow и спасибо за ответ. Не могли бы вы добавить к своему ответу короткий текст или пояснение? - person Run_Script; 04.05.2020