I have to modify existing application, where leaflet layers control is used - I need to display one of the base layers when the map is initiated. Is there a way, how to call some function from the layers control from JS script - something like control.select(1) ....? If not, how can add a tile layer in the same way as it is done by the control - when I add new L.TileLayer during map init, it's not overwritten by manual layers control selection change?
相关问题
- How to use Control.FromHandle?
- Leaflet popups for specific base maps
- leafletjs adding scrollable pop up?
- Replacing in inner Text in open xml element?
- Add text inside leaflet rectangle
相关文章
- Difference between SuspendLayout and BeginUpdate
- change leaflet marker icon
- Prevent zooming out in leaflet R-Map?
- Multiple markers on the exact same position on a L
- How to get instance of Panel that holds content of
- Looking for a DataGridView that allows grouping [c
- leaflet how to make dynamic picture popup using js
- Fill polygon with pattern doesn't work with le
You could try to emulate a user click on the Leaflet Layers Control, but there is a much more simple way to achieve what you initially describe.
Normally by simply adding a layer to the map (e.g.
myTileLayer.addTo(map)
), if that layer is part of the base layers or overlays of the Layers Control, the latter will automatically update its status (if you added a base layer, the radio buttons will be selected accordingly; for an overlay, the corresponding checkbox will be ticked).Now I am not sure I understood properly your last part ("when I add new L.TileLayer during map init, it's not overwritten by manual layers control selection change").
If you mean you have an unexpected behaviour because the Tile Layer you added is not changed by the Layers Control, it may be due to the fact that you are not re-using a Tile Layer that the Layers Control knows: do not use
new L.TileLayer
, but re-use one of the base layers or overlays.For example:
If you are using jQuery you can simulate a click on the
Layers
control to change the base layer:If you want to switch to the second map layer use the next index
[1]
I found this after digging in the leaflet code:
1) find the layer you want to display in control's structure _layers 2) call map.addLayer(_layers[your_layer_index].layer) 3) find your layer in control's structure _form 4) set it's checked attribute to true
There are several ways to handle this problem.
1) You can select second baselayer by clicking on the radio input in layer control. This can be done programatically like this (not recommended):
2) Just change the order of
baseLayers
passed into L.Control.Layers during initialization.3) Extend L.Control.Layers so that it accepts some new option
{"selectedBaseLayerIndex": 1}