传单:如何移动图层控制菜单?


11

这可能是一个愚蠢的问题,但我找不到实现此目的的文档记录方式。

我想自由地将图层控制菜单放置在默认放大/缩小按钮附近的左上方。

我的图层控件如下所示:

// Group layers as overlay pane
overlayPane = {
  "Endpoints" : endpointMarkerLayer,
  "Links" : linkLineLayer
};

// Add a layer control element to the map
layerControl = L.control.layers(null, overlayPane);
layerControl.addTo(map);

其中endpointMarkerLayerlinkLineLayer是分别包含标记和折线的图层。

是否有选项指定菜单应出现的位置?或者,如何获取对控制菜单的DOM-objcet的引用,以便可以为其分配自定义类并覆盖CSS中的定位?

Answers:


14

根据此处的文档,创建图层控件时可以将位置作为选项传递。

此处列出可用职位

overlayPane = {
  "Endpoints" : endpointMarkerLayer,
  "Links" : linkLineLayer,
};

// Add a layer control element to the map
layerControl = L.control.layers(null, overlayPane, {position: 'topleft'});
layerControl.addTo(map);

哇,我怎么想念它。感觉很愚蠢。^^
fgysin恢复Monica 2012年

感觉也一样……
Stender

5

凯尔索的答案是正确的。但是,文档(和API)有点混乱。例如,要基于以下示例创建自定义信息框:http : //leafletjs.com/examples/choropleth.html,您可以执行以下操作:

var mapInfo = L.control({position:'topleft'});

info.onAdd = function (map) {
  this._div = L.DomUtil.create('div', 'info'); // create a div with a class "info"
  this.update();
  return this._div;
};

// method that we will use to update the control based on feature properties passed
info.update = function (props) {
    this._div.innerHTML = '<h4>US Population Density</h4>' +  (props ?
    '<b>' + props.name + '</b><br />' + props.density + ' people / mi<sup>2</sup>'
    : 'Hover over a state');
};

info.addTo(map);

这些选项在控制对象上设置。因此,可能有人认为您可以这样做来放置叠加控件:

// incorrect
var layerControl = L.control({position:'topleft'}).layers(null, mapOverlays).addTo(map);

如上所述,正确的方法是:

// correct
var layerControl = L.control.layers(null, mapOverlays, {position:'topleft'}).addTo(map);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.