Как добавить лодочный маркер folium с другими слоями в python?

#javascript #python #web-applications #leaflet #folium

Вопрос:

Я пытаюсь создать карту с элементами управления слоями. Под слоем FeatureGroup

  1. hot_spot_layer — Маркеры с кластерами маркеров
  2. Слой маршрута — С использованием антпата для построения маршрута

После этого я пытаюсь построить лодочный маркер в конце маршрута. Без Boatmarker карта отображается так, как ожидалось, но когда я добавляю плагин boatmarker в объект базовой карты, карта ничего не отображает.

 import folium 
from folium import plugins

# Creating Map Object
mapObj = folium.Map(location = [1.27,103.78],tiles='OpenStreetMap',
                 zoom_start =4)

# Place Markers for hotspots
fg = folium.FeatureGroup(name="All Layers") #Creating feature group
mapObj.add_child(fg) #Adding feature group to based map object

# adding Hotspots as subgroup of feature group
hot_spot_layer = folium.plugins.FeatureGroupSubGroup(fg,name="Hotspots")

#Creating markercluster for hotspots 
marker_cluster = folium.plugins.MarkerCluster().add_to(hot_spot_layer) 

#Adding a marker
folium.Marker(location= [1.3,143.12],
                icon=folium.Icon(color='brown', icon='anchor', 
prefix='fa')).add_to(marker_cluster) # Adding it to the marker cluster
mapObj.add_child(hot_spot_layer) # Adding to the basemap object

#Route path
# Adding "Routes" as a subgroup of feature group
route_layer = folium.plugins.FeatureGroupSubGroup(fg,name="Routes") 
corr_list = [[-4.14,116.25], [-7.28,117.78]] # Route Coordinates
plugins.AntPath(corr_list).add_to(route_layer) # Adding it to route layer
mapObj.add_child(route_layer) # Adding to the basemap object
#### Upto this point no issue ####

# Some issue when I try to add Boatmarker 
# If I execute the below commented line my map is not rendering with markers amp; route path

# Adding to the basemap object , please uncomment to see the map is not rendering

#folium.plugins.BoatMarker(location=(-7.14,116.25),heading=-20).add_to(mapObj) 

folium.LayerControl(collapsed=True).add_to(mapObj) #Assigning layer control
mapObj.save('test.html')   # html generation
 

Без Лодочного маркера — Никаких проблем

С помощью Boatmarker карта не отображается

Я очень новичок в фолиуме, поэтому знаю, что мой код может быть немного ржавым.

Комментарии:

1. Я тоже новичок в фолиуме. Я изучал это уже несколько часов и не знаю, почему на маркере лодок ничего не отображается.

2. Спасибо, что проверили это. Я предполагаю, что возникла какая-то проблема с управлением слоем/добавлением объектов-маркеров в слои объектов. Я не могу решить эту проблему. Я использовал маркер круга вместо маркера лодки, и это работает.

3. Да, я тоже подозревал что-то подобное. Очень жаль, что это не работает «из коробки». Может быть, какой-нибудь эксперт по фолиуму или Python мог бы просмотреть скрипт Boatmarker и объяснить, где все идет не так. Возможно, это даже можно было бы внести свой вклад в лучшую реализацию плагина. Надеюсь, кто-нибудь придет сюда на помощь: -)