Возникли проблемы при отображении атрибутов GeoJSON в контейнере Leaflet - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь создать динамическое всплывающее окно в моей карте листовки, в которой я поместил ссылку. Когда вы нажимаете на ссылку, я бы хотел, чтобы на странице появился предопределенный контейнер, который отображает определенные атрибуты из слоя GeoJSON.

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

Слой многоугольника, к которому привязано всплывающее окно, выглядит следующим образом:

var container = $('<div />');

  var poly = new L.GeoJSON.AJAX("polygons.geojson", {
     style: {"color": "red",
     "weight": 5,
     "opacity": 0.65},
     onEachFeature: function(feature, layer){
         container.on('click', '.smallPolygonLink', function() {
           if (feature.properties.attribute1 == 'value1') {
               alert("This is one message");
             }
             else if (feature.properties.attribute1 == 'value2'){
               alert("this is another message");
             }
       });
       }
       });

Предполагается, что контейнер должен быть заполнен одной из двух строк в зависимости от значения. Следующий код является содержимым всплывающего окна, которое, кажется, работает:

container.html("This is a link: <a href='#' class='smallPolygonLink'>Click me</a>.");
container.append($('<span class="bold">').text(" :)"))

Проблема со всем приведенным выше кодом заключается в том, что он создает бесконечный цикл, и сообщение не зависит от значения атрибута.

Надеюсь, что вы можете помочь

...