根据每个功能的属性ID获取不同的geoJSON文件

时间:2017-03-25 04:01:20

标签: javascript leaflet geojson

我是javascript的新手 - 但我编写了以下代码来绘制列车的位置,并使用传单的“onEachFeature”为每个功能添加列车路线(请参阅screenshot):

//Add marker description before being added to layer
function eachFeature(feature, layer) {
    layer.bindPopup(feature.properties.id);
    layer.on({
        mousedown: onClick,
        mouseover: whenHovered,
        mouseout: offHovered
    });
}

// Show/hide train lines on hover
function onClick() {
  $.getJSON("AEHL_2b.geojson", 
    function(data) { 
      staticRoute = L.geoJson(data);
      staticRoute.addTo(map); 
  });
}

function whenHovered() {
  $.getJSON("OPS_1b.geojson", 
    function(data) { 
      hoverRoute = L.geoJson(data);
      hoverRoute.addTo(map); 
  });
}

function offHovered() {
  map.removeLayer(hoverRoute);
}

基本上,我正在使用传单的onEachFeature函数(特别是传单实时)来尝试做两件事:

  1. 添加包含功能的传单ID
  2. 的弹出窗口
  3. 下载geoJson文件,根据功能的宣传单ID 绘制火车路线
  4. 目前,我已经对geoJson进行了硬编码,但我似乎找不到抓取每个要素的传单ID以便在我的getJson函数中使用的方法。

    是否有可能获取不同的geoJson文件,如果是这样,有人可以帮我解决一些问题吗?任何帮助,因为我是javascript的新手

    谢谢!

1 个答案:

答案 0 :(得分:2)

未来自我/未来的自我更新 - 如果您将onClick / whenHovered / offHovered函数放在onEachFeature使用的函数中,它就会起作用。 E.g。

        function eachFeature(feature, layer) {
            layer.bindPopup(feature.properties.id);
            layer.on({
                mousedown: onClick,
            });

            //Add train route when clicked, or when hovering
            function onClick(){
                $.getJSON(feature.properties.id+".geojson", 
                    function(data) { 
                      staticRoute = L.geoJson(data);
                      staticRoute.addTo(map); 
                });
            }
        }