2016-05-01 16 views
2

Auf dem Vordach Version 1.5.5.3123 laufen Mit;Folium Karte wird nicht angezeigt

Folium Version: 0.1.2, Build: 1

den folgenden Code;

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) 

Returns

<folium.folium.Map at 0x10c01ae10> 

Aber sonst nichts.

Wie kann ich eine Karte in einem Ipython-Notizbuch anzeigen?

Antwort

2

Ich habe gefunden this tutorial on Folium in iPython Notebooks ziemlich hilfreich. Die rohe Folium-Instanz, die Sie erstellt haben, reicht nicht aus, um iPython dazu zu bringen, die Map anzuzeigen. Sie müssen etwas mehr Arbeit aufwenden, um HTML zu erhalten, das iPython rendern kann.

Um im iPython-Notizbuch anzuzeigen, müssen Sie den HTML-Code mit der Methode myMap._build_map() generieren und dann in einen iFrame mit Formatierung für iPython umbrechen.

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 

Wo durch embed als die Ausgabe der ipython Zelle zurückkehrt, ipython automatisch display.display() auf dem zurück iFrame nennen. In diesem Zusammenhang sollten Sie nur display() aufrufen müssen, wenn Sie anschließend etwas anderes rendern oder dies in einer Schleife oder Funktion verwenden.

Beachten Sie außerdem, dass die Verwendung von map als Variablenname möglicherweise mit der Methode .map() mehrerer Klassen verwechselt werden kann.

+2

myMap._build_map() _build_map() wird nicht mehr beendet. Sie nahmen es aus dem Folium heraus. Wie sollen wir das Problem lösen, wenn wir _build_map() nicht haben? – overloading

1

Gibt es einen Grund, warum Sie eine veraltete Version von Folium verwenden?

Dieses Ipython-Notizbuch klärt einige der Unterschiede zwischen 1.2 und 2 und erklärt, wie man Folium-Maps in Iframes einfügt. http://nbviewer.jupyter.org/github/bibmartin/folium/blob/issue288/examples/Popups.ipynb

Und der Code würde wie folgt aussehen (im Notebook oben gefunden, fügt es einen Marker, aber man konnte es einfach aus nehmen):

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 

Die Dokumente sind und laufen auch , http://folium.readthedocs.io/en/latest/