Интеграция Django и folium возвращает «None» - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь использовать фолиум для получения карт в моем приложении django.

Вот код:

def map(request):

    data = pd.DataFrame({
        'lat': [77, 75, 72, 77, 78],
        'lon': [28, 26, 19, 29, 30],
        'name': ['Buenos Aires', 'jaipur', 'mumbai', 'gurgaon', 'dehradun']
    })
    m = folium.Map(location=[21, 78], tiles="Mapbox Bright", zoom_start=4.75)

    for i in range(0, len(data)):
        folium.Marker([data.iloc[i]['lon'], data.iloc[i]['lat']], popup=data.iloc[i]['name']).add_to(m)

    m.save('graph.html')

    context = {'map': m}
    print("context is", context)

    return render(request, 'classroom/teachers/map.html', context)

Urls.py

    path('map', teachers.map, name='map'),

HTML

<html lang="en">
<head>
     <meta charset="UTF-8">
     <title>Title</title>
</head>
<body>
{{ map.render }}
</body>

Я ожидаю, что он покажет карту с некоторыми маркерами на заданной широте и долготе, но что-то не так. Что мне нужно изменить, чтобы получить ожидаемый результат?

1 Ответ

0 голосов
/ 05 июня 2019

сначала импортируйте панды и фолиум, а затем попытайтесь следовать этому шаблону

import folium
import pandas

data = pandas.read_csv("Volcanoes_USA.txt")
lat = list(data["LAT"])
lon = list(data["LON"])
elev = list(data["ELEV"])

def color_producer(elevation):

    if elevation < 1000:
      return 'green'
    elif 1000 <= elevation < 3000:
      return 'orange'
    else:
      return 'red'

map=folium.Map(location=[38.58,-99.09],zoom_start=6,tiles="Mapbox Bright")

fg = folium.FeatureGroup(name="My Map")

    for lt, ln, el in zip(lat, lon, elev):
    fg.add_child(folium.CircleMarker(location=[lt, ln], radius=6, popup=str(el) + "m",
       fill_color = color_producer(el), color='grey', fill_opacity=0.7))

    fg.add_child(folium.GeoJson(data=open('world.json','r',encoding='utf-8-sig').read()),
    style_function = lambda x: {'fillColor': 'yellow'})

map.add_child(fg)

map.save("Map1.html")
...