Я сделал веб-карту с python, используя фолиум. Карта считывается в население. json файл, который содержит названия стран и номер населения и отображает карту в браузере.
Вот код:
import pandas
import folium
map = folium.Map(location=[32, 0], zoom_start=4.3, tiles = "CartoDB positron", max_zoom = 100)
fgp = folium.FeatureGroup(name="Population" )
def colorPicker(population):
if population < 10000000:
return 'green'
elif population >= 10000000 and population < 500000000:
return 'orange'
else:
return 'red'
fgp.add_child(folium.GeoJson(data=open('population.json', 'r', encoding='utf-8-sig').read(),
style_function=lambda x: {'fillColor': colorPicker(x['properties']['POP2005'])},
tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])
))
map.add_child(fgp)
map.save("index.html")
Я создал группу объектов и add_child, чтобы добавить цвета для каждой страны на карте на основе их численности населения с помощью этого кода:
style_function=lambda x: {'fillColor': colorPicker(x['properties']['POP2005'])}
В таком случае я хотел бы, чтобы каждый раз, когда пользователь наводил курсор на страну, я хотел отобразить название страны и численность населения страны. Для этого я написал:
tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])
Вместо того, чтобы дать мне название страны, он дает мне это ... Изображение карты
Предполагается, что сказать «Китай:« численность населения », но вместо этого показывает« в 0x24 .... »
Я не уверен, почему. Я пробовал несколько вариантов всплывающей подсказки, например:
tooltip=lambda x: '{0}\n{1}'.format(x['properties']['Name'], x['properties']['POP2005'])
tooltip=lambda x: '%s\n%s' % (x['properties']['Name'], x['properties']['POP2005'])
tooltip= lambda x: {'text': x['properties']['Name']}))
tooltip= lambda x: {'%s': x['properties']['Name']}))
Но, тем не менее, показывает тот же вывод
Вот ссылка на заполнение. json file: file