Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Is there a way to add colormap to LayerControl? #450

Open
koldunovn opened this issue Jun 15, 2016 · 15 comments
Open

Is there a way to add colormap to LayerControl? #450

koldunovn opened this issue Jun 15, 2016 · 15 comments
Labels
feature request Feature request or idea about how to make folium better

Comments

@koldunovn
Copy link

First of all incredible progress from the last time I have checked folium, my respect to the team!

I am trying to use some examples from Colormaps.ipynb and it seems like the colormap is not recognised by the LayerControl as one of the layers. My question have two parts:

  • Is there a way to make LayerControl aware of the colormap?
  • Most importantly is there a way to combine the layer created, say, with GeoJson and colormap, so they are switched on and off together in the LayerControl.

At the end I would like to have 2 layers on one map, but they should have different colormaps.

@BibMartin
Copy link
Contributor

In fact a Colormap is not a Layer in Leaflet's sense. So it's not trivial to add it to a LayerControl.
But it may be possible to do that in using LayersControlEvent and writing explicit code that hides/show the colormap.

@koldunovn
Copy link
Author

koldunovn commented Jun 15, 2016

@BibMartin Thanks for the reply! I certainly will not be able to implement it, since my Java Script knowledge is zero. I just found similar question here http://gis.stackexchange.com/questions/68941/how-to-add-remove-legend-with-leaflet-layers-control with an answer [EDIT, Oh I see it's basically what you have suggested]. Maybe it will help.

Anyway I think this issue now can be turned to feature quest I guess :)

@BibMartin
Copy link
Contributor

Anyway I think this issue now can be turned to feature quest I guess :)

True. And that would be a useful feature btw.

Thanks for the idea and for the link 😉

@BibMartin BibMartin added the feature request Feature request or idea about how to make folium better label Jun 15, 2016
@ocefpaf
Copy link
Member

ocefpaf commented Jun 15, 2016

First of all incredible progress from the last time I have checked folium, my respect to the team!

Just to be fair team == @BibMartin lately 😉

@BibMartin
Copy link
Contributor

Thanks to your link @koldunovn , I finally found a way of doing it. See here.

But I don't know where it should be put:

  • As a method in branca.colormap.Colormap
  • As a method in folium.map.Layer
  • As a third object as shown in the example notebook
  • As a child of one of the two objects

Well this is open to discussion (and to volunteers for a PR 😉 )

@koldunovn
Copy link
Author

@BibMartin This is just amasing! Exactly what I need!
From the user perspective I think it is logical to create two separate objects and then bind them together (similar to FeatureGroup, I guess)?

@TayariAmine
Copy link

@BibMartin thank you for your answer that was also helpful for me.
I wanted to ask if we can adjust the background of the colormap to white or any other color so we can avoid some visibility problems caused by the colors of the map itself.
Thank you.

@arnaud-nt2i
Copy link

@BibMartin merci !

@CallMePablito
Copy link

@BibMartin

Hello! Thanks for a solution, but don't you know, is there a way to make different layers with different colormaps as not overlay layers? So at the moment, there would be only one layer with only one colormap. If I change overlay statuses in your function, the map won't work properly.

@ajkeller10
Copy link

@CallMePablito

Try changing the trigger in @BibMartin 's code from overlayadd to layeradd and overlayrremove to layerremove. That worked for me even when you have overlay=False for your layers, which I believe is what you're referencing!

@EmanuelCastanho
Copy link

EmanuelCastanho commented Sep 8, 2023

Sadly this is not working for me when my colorbar is an image added with FloatImage

@AtharvaShekatkar
Copy link

Thanks to your link @koldunovn , I finally found a way of doing it. See here.

But I don't know where it should be put:

  • As a method in branca.colormap.Colormap
  • As a method in folium.map.Layer
  • As a third object as shown in the example notebook
  • As a child of one of the two objects

Well this is open to discussion (and to volunteers for a PR 😉 )

Hey! I'm creating a categorical legend like this:

legend_html = """
<div style="position: fixed; 
             bottom: 50px; left: 50px; width: 200px; height: 90px; 
             border:2px solid grey; z-index:9999; font-size:14px;
             ">&nbsp; Legend <br>
             &nbsp; Category A &nbsp; <i class="fa fa-map-marker fa-2x" style="color:red"></i><br>
             &nbsp; Category B &nbsp; <i class="fa fa-map-marker fa-2x" style="color:blue"></i>
</div>
"""
m.get_root().html.add_child(folium.Element(legend_html))

Any idea how I can change your code for the BindColormap class to fit my use case? Thanks!

@berrfred
Copy link
Contributor

@BibMartin solution used to work just fine in folium v0.14.0 but since I updated to v0.15.1 all my colormaps are initially displayed ... just like layeradd and layerremove events were not initially fired. Then interacting with Layer Control it starts working fine.

Has anybody else encountered such an issue ?

@d-forster
Copy link

@berrfred I have encountered the same issue - all my colormaps are initially displayed, but then once the bound FeatureGroup is toggled on and off again, it works as normal. Would ideally like it to be initially hidden, and only displayed once the overlay for the bound FeatureGroup is toggled "on". I can't seem to find a suitable "show=False" parameter for the Colormap or the add_child method that would seem to be the key.

@jactuary14
Copy link

@berrfred I'm also having this issue, I'm going to try to find a way to change that (though it's low on my priority list). I'll let y'all know if anything comes of it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature request Feature request or idea about how to make folium better
Projects
None yet
Development

No branches or pull requests