Leaflet Choropleth Map - 切换到 Leaflet 1.2

Leaflet Choropleth Map - switch to Leaflet 1.2

我的地图有问题。我切换到 Leaflet 1.2,其中一个功能无法正常工作。 代码在这里:

http://mapaszlakow.eu/mapa1.2.html

当通过 js 激活 geojson 叠加层并单击自行车路线时,它会放大到一条路线,但它不会突出显示并且信息 window 不会显示。 这是完全相同的例子,但在旧版本的 Leaflet 上(我认为它是 0.7)。

http://mapaszlakow.eu/

我找不到问题,我唯一做的就是切换到 Leaflet 1.2,我将不胜感激。

编辑:我相信,问题出在这里:

    function select(layer) {
    info.update(layer.feature.properties);
    if (selected !== null) {
        var previous = selected;
    }
    map.fitBounds(layer.getBounds());
    selected = layer;
    if (previous) {
        dehighlight(previous);
    }
    }

    var selected = null;

我已经从 http://mapaszlakow.eu/mapa1.2.html 测试了您的代码,它几乎可以正常工作 - 悬停时它会正确突出显示路线,点击它会缩放到路线范围 - 除了显示弹出信息。要解决此问题,请查看我根据您的代码制作的 fiddle:

http://jsfiddle.net/5z17y5oL/18/ (此 fiddle 必须通过 http 访问,因为您的服务器不使用 https 提供数据)

主要区别在于我将参数传递给 info.update(e.feature.properties); 次。


编辑

我编辑的 fiddle 在这里:http://jsfiddle.net/5z17y5oL/25/

所以我移动了 info.update(e.feature.properties); 以从图层点击侦听器调用。在地图上单击的图层样式已重置,信息正在清除,因为它接收到空值。

.....
onEachFeature: function(feature, layer) {
    layer.on({
      .....
      'click': function(e) {
        select(e.target);
        info.update(e.feature.properties);
      }
    });
    map.on({
      'click': function(e) {
        bicyclegeojson.resetStyle(layer);
        info.update(null);
        selected = null;
      }
    });
....

//编辑结束


还有一件事 - 你有一个小错误,你应该改变这一行:

map.addControl(layerControl).addTo(map);

map.addControl(layerControl);