Я пытаюсь создать html-файл, используя библиотеку «folium» в Python, а затем применяю плитку покрытия с помощью API «Mapillary», но он не отображается при применении этого слоя.
Странно то, что в программе QGIS я получаю этот слой:
Это мой код, генерирующий html:
def create_map():
my_map = folium.Map(location=[50, 0], zoom_start=8)
vector_tile_url = "https://tiles.mapillary.com/maps/vtp/mly1_public/{z}/{x}/{y}?access_token = " + os.getenv(
"MAPILLARY_API_KEY")
attribution = "Map data © <a href='https://mapillary.com'>Mapillary</a> contributors"
folium.TileLayer(vector_tile_url, name = "mapillary", attr=attribution, overlay=True).add_to(my_map)
folium.LayerControl().add_to(my_map)
my_map.save("map_with_vector_tiles.html")
print("Map with vector tiles saved as map_with_vector_tiles.html")
Похоже, что Mapillary использует буферы протокола . Итак, может быть, вам нужен VectorGridProtobuf ?
import os
import folium
m = folium.Map(location=[0, 0], zoom_start=2, width = "80%", height = "70%")
url = (
"https://tiles.mapillary.com/maps/vtp/"
"mly1_public/2/{z}/{x}/{y}?access_token = {token}"
)
options = {
"token": os.getenv("MAPILLARY_API_KEY"),
"vectorTileLayerStyles": {
"overview": {
"fill": True,
"radius": 5,
"color": "#e87147",
"opacity": 0.6,
},
},
}
pbf = folium.plugins.VectorGridProtobuf(url, "mapillary", options)
pbf.__dict__["overlay"] = True # otherwise, TypeError
pbf.add_to(m)
folium.LayerControl().add_to(m)
# m.save("map.html") # uncomment to make an html
Примечание. Не стесняйтесь добавлять стили для двух других слоев плиток покрытия: последовательности и изображения.
Вывод (m
, в Jupyter):
Другой вид (в центре 50/0
, показывающий последовательности/линии):