How can I include HTML in a Folium Marker popup?
You should check the Folium version you are using. 0.2.0 has changed how popups are added, as explained in this issue thread: https://github.com/python-visualization/folium/issues/360
Popups now no longer take html automatically but rather one must pass in a folium.element.IFrame
of the html.
This notebook shows the differences in folium 0.2.0: http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb
And, the code would look something like this (found in the notebook above):
m = folium.Map([43,-100], zoom_start=4)
html="""
<h1> This is a big popup</h1><br>
With a few lines of code...
<p>
<code>
from numpy import *<br>
exp(-2*pi)
</code>
</p>
"""
iframe = folium.element.IFrame(html=html, width=500, height=300)
popup = folium.Popup(iframe, max_width=2650)
folium.Marker([30,-100], popup=popup).add_to(m)
m
NB: The way to create markers, therefore, is no longer simple_marker
or circle_marker
, but rather folium.Marker
or folium.CircleMarker()
.
The docs have also been (recently?) put up.
You can embed arbitrary HTML using folium.Html
, with script=True
. Here is a minimal example which demonstrates this:
import folium
m = folium.Map([51.5, -0.25], zoom_start=10)
test = folium.Html('<b>Hello world</b>', script=True)
popup = folium.Popup(test, max_width=2650)
folium.RegularPolygonMarker(
location=[51.5, -0.25], popup=popup,
).add_to(m)
m.save('osm.html')
Without script=True
, the string passed to folium.Html
is escaped and so the HTML markup is visible in the marker popup.
This is documented in the branca examples page. I was using Folium 0.3.0.
Try changing the location, URL, and popup text you want.
import folium
f = folium.Figure(width=1000, height=1000)
m=folium.Map([39.067758, -94.573534], zoom_start=25).add_to(f)
pp= folium.Html('<a href="'+ 'give your url here'+'"target="_blank">'+ 'popup text' + '</a>', script=True)
popup = folium.Popup(pp, max_width=2650)
folium.Marker(location=[39.067758, -94.573534], popup=popup).add_to(m)
m=m._repr_html_()