Добавление пользовательских значков в листовке в файл geojson - PullRequest
0 голосов
/ 04 мая 2019

Я получил следующий код

var Iconcm = L.icon({
iconUrl: 'customicon.png',
iconSize: [25, 25],
iconAnchor: [22, 94],
popupAnchor: [-10, -95]
});



$.ajax({
        dataType: "json",
        url: "pc.geojson",
        success: function(data) {
                L.geoJson(data, {
                    onEachFeature: onEachFeature
                }).addTo(map);
        }
     }).error(function() {});


        function onEachFeature(feature, layer) {
      var lines = ('Field1: ' + feature.properties.f1 + '<br>' + 'Field2: ' + feature.properties.f2)

            layer.bindPopup(lines);
        };

Я хочу использовать Iconcm вместо синего маркера по умолчанию. Я попробовал почти все способы сделать это, которые я нашел в Интернете, но безрезультатно. Я новичок в JavaScript и даже больше в AJAX. Приведенный выше код - единственный способ, с помощью которого мой файл geojson действительно работал, поэтому я бы предпочел сохранить его таким. Кроме того, в будущем я хотел бы иметь возможность использовать разные значки в зависимости от свойств объекта в одном поле. Например, если feature.properties.f3 равно Type1, будет customicon1, Type2 равно customicon2 и так далее. Есть ли способ сделать это тоже? Спасибо!

1 Ответ

2 голосов
/ 04 мая 2019

Существует метод setIcon , который вы можете использовать.

Вы хотите проверить, вы называете его только если слой на самом деле является L.Marker

function onEachFeature(feature, layer) {
  if (layer instanceof L.Marker) {
    layer.setIcon(Iconcm)
  }
// ...
...