如何使用leaflet和leaflet-provider进行图层控制

时间:2018-05-29 14:25:52

标签: leaflet

我想在使用传单和传单提供者时显示层控制。 它运行良好但在加载时,未在控件中选择使用的地图。 请注意,我可以选择默认地图(当然,没有任何变化),我可以选择其他地图(并切换到此地图)。

为什么在控件中未选择默认地图? 我不知道是否存在问题,或者我是否使用了相应的代码。

你可以在这里看到关于plunker的代码:http://plnkr.co/edit/d4ycVbdVRGoxE9h8svQe

var map = L.map('osm_map', {
    zoom: 4,
    zoomControl: false,
    minZoom: 2,
    maxZoom: 18
});
var baseMaps = {
    'OpenTopoMap': L.tileLayer.provider('OpenTopoMap'),
    'OpenStreetMap.France': L.tileLayer.provider('OpenStreetMap.France')
};
L.tileLayer.provider('OpenTopoMap').addTo(map);
L.control.layers(baseMaps).addTo(map);
L.control.zoom({position: 'topleft'}).addTo(map);
L.marker([57.150,-6.100]).addTo(map);
L.marker([57.500,-6.450]).addTo(map);
map.fitBounds([
    [57.150,-6.100], [57.500,-6.450]
]);

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

  

为什么在控件中未选择默认地图?

因为你实际创建了2个Tile Layers,即使它们渲染完全相同。

要使Leaflet图层控件检测到其中一个基本地图已添加到地图(“默认”基本地图),您必须添加完全相同的图层对象。

while (iterator.hasNext()) {