2016-12-12 8 views
0

С простой пример, как это:Hover во всплывающем окне в Folium

import folium 

map_1 = folium.Map(location=[45.372, -121.6972], zoom_start=12, 
        tiles='Stamen Terrain') 
folium.Marker([45.3288, -121.6625], popup='Mt. Hood Meadows').add_to(map_1) 
map_1 

Можете ли вы сделать всплывающее окно, появляются только помещая мышь вверх? Возможно ли это с фолиевым?

ответ

1

Ваш вопрос спрашивает о лепестка, и я не думаю, что это так, но я думаю, что вы можете добавить Javascript (с JQuery, было бы просто супер, я подозреваю), чтобы имитировать событие щелчка onmouseover или mouseenter

var test = document.getElementById("test"); 

    test.addEventListener("mouseenter", handlerClickFunction); 
+0

Да, я не думаю, что фолий может это сделать. Другим решением является прямое использование [листовки] (http://gis.stackexchange.com/questions/32723/how-to-open-popup-on-mouseover-in-leaflet?rq=1) – Lucas

+0

Да, очень вероятно, извините хотя, это не в моих силах :) – Nevermore

2

Вы не можете легко это сделать из фолиевого дерева. Но так как folium создает код LeafletJS, вы можете изменить вывод, чтобы он работал. Для этого вам придется добавить к полученному HTML код, указанный в this answer:

marker.bindPopup("Popup content"); 
    marker.on('mouseover', function (e) { 
     this.openPopup(); 
    }); 
    marker.on('mouseout', function (e) { 
     this.closePopup(); 
    }); 

Если у вас есть много маркеров, это может стать сложной задачей, но вы можете сделать это через питон (хотя это не будет выглядеть красиво). Псевдокод:

import re 

with open("map.html") as inf: 
    txt = inf.read() 

#Find all the markers names given by folium 
markers = re.findall(r'\bmarker_\w+', txt) 

for marker in markers: 
    # Add the code given before to the string txt 

# Save the new map 
with open("new_map.html", "w") as outf: 
    outf.write(txt) 

Этот код открывает сгенерированный HTML-файл, найти все маркеры, и добавляет код для каждого маркера.