Я пытаюсь использовать CircleMarker из фолио для отображения точек на основе фрейма данных. Проблема возникает с всплывающей частью маркера. Я получаю неправильные всплывающие окна для перекрывающихся координат. Есть ли способ исправить это? Как вы можете видеть на фотографии, независимо от того, в каком кружке я нажимаю, я получаю всплывающее окно с тем же значением, тогда как ожидаемое всплывающее окно должно изменяться в зависимости от «имени». Я чувствую, что всплывающее окно каким-то образом перезаписывается. Код, который я использую, если ниже:
def color_producer(perc):
if perc < 5:
return 'red'
elif 5 <= perc < 20:
return 'orange'
elif 20 <= perc < 40:
return 'yellow'
else:
return 'green'
map = folium.Map(location=[100,0], zoom_start=2)
for lat,lon,name,perc in zip(df['lat'],df['long'],df['ix_name'],df['perc']):
(folium.CircleMarker(location=[lat, lon],
radius = perc,
popup= name,
fill=True, # Set fill to True
fill_color=color_producer(perc),
color = color_producer(perc))).add_to(map)
Я просмотрел сгенерированный исходный код html. Он хорошо смотрится со всеми разными именами для всплывающих окон. Вставка ниже для ref:
var circle_marker_7491df9ab173464ab69203523757c828 = L.circleMarker(
[19.03681, 73.01582],
{"bubblingMouseEvents": true, "color": "green", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "green", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 53.086419753086425, "stroke": true, "weight": 3}
).addTo(map_1ab3aa4a1c4748dcacb78d6a21b647be);
circle_marker_7491df9ab173464ab69203523757c828.bindTooltip(
`<div>
53.086419753086425
</div>`,
{"sticky": true}
);
var popup_4123819b7b89443ba50eac288bcf3d3f = L.popup({"maxWidth": "100%"});
var html_a0d12ff985d64ac0ac836d6a37a75452 = $(`<div id="html_a0d12ff985d64ac0ac836d6a37a75452" style="width: 100.0%; height: 100.0%;">DE-CIX Mumbai</div>`)[0];
popup_4123819b7b89443ba50eac288bcf3d3f.setContent(html_a0d12ff985d64ac0ac836d6a37a75452);
circle_marker_7491df9ab173464ab69203523757c828.bindPopup(popup_4123819b7b89443ba50eac288bcf3d3f)
;
var circle_marker_437f3afc648a4fd6983cde142a6b24c4 = L.circleMarker(
[19.03681, 73.01582],
{"bubblingMouseEvents": true, "color": "gray", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "gray", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 39.50617283950617, "stroke": true, "weight": 3}
).addTo(map_1ab3aa4a1c4748dcacb78d6a21b647be);
circle_marker_437f3afc648a4fd6983cde142a6b24c4.bindTooltip(
`<div>
39.50617283950617
</div>`,
{"sticky": true}
);
var popup_150a69ba701b4e46ba5fdb45699302d7 = L.popup({"maxWidth": "100%"});
var html_8feba716a60e41c1adfeef7becb0af51 = $(`<div id="html_8feba716a60e41c1adfeef7becb0af51" style="width: 100.0%; height: 100.0%;">Extreme IX Mumbai</div>`)[0];
popup_150a69ba701b4e46ba5fdb45699302d7.setContent(html_8feba716a60e41c1adfeef7becb0af51);
circle_marker_437f3afc648a4fd6983cde142a6b24c4.bindPopup(popup_150a69ba701b4e46ba5fdb45699302d7)
;
var circle_marker_68ff85d3457b43d3b493952dcc6d092c = L.circleMarker(
[19.03681, 73.01582],
{"bubblingMouseEvents": true, "color": "gray", "dashArray": null, "dashOffset": null, "fill": true, "fillColor": "gray", "fillOpacity": 0.2, "fillRule": "evenodd", "lineCap": "round", "lineJoin": "round", "opacity": 1.0, "radius": 32.098765432098766, "stroke": true, "weight": 3}
).addTo(map_1ab3aa4a1c4748dcacb78d6a21b647be);
circle_marker_68ff85d3457b43d3b493952dcc6d092c.bindTooltip(
`<div>
32.098765432098766
</div>`,
{"sticky": true}
);
var popup_cd2406fa5fa94ea98aab5bef6679cba3 = L.popup({"maxWidth": "100%"});
var html_944ab6bbac7b4cc7bdd2e5fb0d8c8c53 = $(`<div id="html_944ab6bbac7b4cc7bdd2e5fb0d8c8c53" style="width: 100.0%; height: 100.0%;">NIXI Mumbai</div>`)[0];
popup_cd2406fa5fa94ea98aab5bef6679cba3.setContent(html_944ab6bbac7b4cc7bdd2e5fb0d8c8c53);
circle_marker_68ff85d3457b43d3b493952dcc6d092c.bindPopup(popup_cd2406fa5fa94ea98aab5bef6679cba3)
;
Я не очень хорош с html. Может быть, всплывающие окна не отображаются из-за того, что они находятся на одной и той же широте и длине?