Создание маркера на карте с использованием результатов Folium на пустой HTML-странице - PullRequest
0 голосов
/ 28 августа 2018

Я пытался создать карту с использованием библиотеки фолио в python3. Это работает хорошо, пока я не добавлю маркер на карту. При добавлении Marker результат будет просто пустой HTML-страницей.

import folium

map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")

folium.Marker([26.80,80.76],popup="Hey, It's Moradabad").add_to(map)
map.save("mapOutput.html")

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

@ MCO абсолютно правильно.

Мне нравится использовать html.escape () для обработки проблемных символов, таких как

import folium
import html

map = folium.Map(location=[20.59,78.96], tiles = "Mapbox Bright")

folium.Marker([26.80,80.76],popup=html.escape("Hey, It's Moradabad")).add_to(map)
map.save("mapOutput.html")
0 голосов
/ 29 августа 2018

по моему опыту, фолиум очень чувствителен к одиночным кавычкам (').

Причина в том, что folium генерирует javascript и преобразует ваши строки в строки javascript, которые заключаются в одинарные кавычки. Однако он не исключает ни одной кавычки, содержащейся в строке (даже не уверен, что это возможно в js), поэтому наличие одинарной кавычки в строке имеет тот же эффект, что и не закрытие строки в python.

Решение: замените все одинарные кавычки в строках на обратные кавычки (`) или (лучше) используйте ответ @Bob Haffner.


Редактировать: по чистой случайности я наткнулся на другое решение только сейчас. Очевидно, folium.Popup имеет аргумент parse_html. Используйте это так:

folium.Marker([x,y], popup=folium.Popup("Foo'Bar",parse_html=True)).add_to(map)

однако я не смог бы заставить его работать без ошибки unicodeescape. тем не менее, он существует, предположительно для этой цели, и может работать на вас.


Редактировать 2: Как мне сказали на github, эта проблема будет исправлена ​​в следующем выпуске. Ссылка: Фолиум # 962

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...