Карта фолиума не отображается

Бег навеса версии 1.5.5.3123 С;

Версия Folium: 0.1.2, сборка: 1

Следующий код;

import folium  
import pandas as pd
LDN_COORDINATES = (51.5074, 0.1278)  
from IPython.display import HTML
import shapefile
#create empty map zoomed in on London
LDN_COORDINATES = (51.5074, 0.1278) 
map = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(map)  

Возвращает

<folium.folium.Map at 0x10c01ae10>

Но больше ничего.

Как я могу отобразить карту в блокноте ipython?

7 ответов

Решение

Я нашел этот урок по Folium в iPython Notebooks весьма полезным. Созданного вами необработанного экземпляра Folium недостаточно, чтобы iPython отображал карту - вам нужно проделать немного больше работы, чтобы получить HTML, который iPython может отображать.

Для отображения в записной книжке iPython необходимо сгенерировать html с помощью метода myMap._build_map(), а затем обернуть его в iFrame со стилем для iPython.

import folium  
from IPython.display import HTML, display
LDN_COORDINATES = (51.5074, 0.1278) 
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
myMap._build_map()
mapWidth, mapHeight = (400,500) # width and height of the displayed iFrame, in pixels
srcdoc = myMap.HTML.replace('"', '&quot;')
embed = HTML('<iframe srcdoc="{}" '
             'style="width: {}px; height: {}px; display:block; width: 50%; margin: 0 auto; '
             'border: none"></iframe>'.format(srcdoc, width, height))
embed

Куда, вернувшись embed как вывод ячейки iPython, iPython автоматически вызовет display.display() на возвращенном iFrame. В этом контексте вам нужно только позвонить display() если вы рендерите что-то еще потом или используете это в цикле или функции.

Также обратите внимание, что с помощью map имя переменной может быть перепутано с методом.map() нескольких классов.

Вы также можете сохранить карту в формате html, а затем открыть ее в веб-браузере.

      import folium
import webbrowser


class Map:
    def __init__(self, center, zoom_start):
        self.center = center
        self.zoom_start = zoom_start
    
    def showMap(self):
        #Create the map
        my_map = folium.Map(location = self.center, zoom_start = self.zoom_start)

        #Display the map
        my_map.save("map.html")
        webbrowser.open("map.html")


#Define coordinates of where we want to center our map
coords = [51.5074, 0.1278]
map = Map(center = coords, zoom_start = 13)
map.showMap()

_build_map() больше не существует. Следующий код работал для меня

import folium
from IPython.display import display
LDN_COORDINATES = (51.5074, 0.1278)
myMap = folium.Map(location=LDN_COORDINATES, zoom_start=12)
display(myMap)

С учетом приведенных выше ответов, еще один простой способ - использовать ноутбук Юпитер.

например (на блокноте Юпитера):

import folium

london_location = [51.507351, -0.127758]

m = folium.Map(location=london_location, zoom_start=15)
m

и увидеть результат при вызове "м".

В 2022 году нет необходимости использовать iframe. Чтобы отобразить карту, просто используйте

{{ map | safe }}тег в html и _repr_html_()метод в вашем представлении. Также не обязательно сохранять карту в шаблон

образец.py

      @app.route('/')
def index():
    start_coords = (46.9540700, 142.7360300)
    folium_map = folium.Map(location=start_coords, zoom_start=14)
    return folium_map._repr_html_()

шаблон.html

      <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
{{ folium_map | safe }}
</body>
</html>

Есть ли причина, по которой вы используете устаревшую версию Folium?

В этой записной книжке ipython разъясняются некоторые различия между 1.2 и 2, а также объясняется, как размещать карты фолиума в фреймах. http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb

И код будет выглядеть примерно так (в блокноте выше он добавляет маркер, но его можно просто убрать):

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

Документы тоже готовы и работают, http://folium.readthedocs.io/en/latest/

у меня такая же ошибка, и у меня ничего не работает, наконец, я нашел ее print(dir(folium.Map)) см. Метод сохранения дозы не существует, вместо этого используйте

Другие вопросы по тегам