import folium
from xml.dom.minidom import parseString
with open('./WRSC2019_day2.kml', 'rt') as f:
doc=f.read()
p = parseString(doc)
nodes = p.getElementsByTagName('Placemark')
way_points={}
for n in nodes:
raw_coord = n.getElementsByTagName('coordinates')[0].firstChild.nodeValue.split(',')
name = (n.getElementsByTagName('name')[0].firstChild.nodeValue)
way_points[name] = [float(raw_coord[1]), float(raw_coord[0])]
way_points
{'part1': [29.8670802716486, 121.5388744943008], 'part1_north': [29.86760479960283, 121.5386485345583], 'part2': [29.86728839409328, 121.5384644978518], 'part2_north': [29.86741570259075, 121.5390613102629]}
marker_list = [['A', way_points['part1']],
['B', way_points['part2']],
['A', way_points['part1_north']],
['B', way_points['part2_north']]]
def add_waypoint(name, latlon):
folium.map.Marker(
latlon,
icon=folium.features.DivIcon(
icon_size=(12,12),
icon_anchor=(0,0),
html='<div style="font-size: 12pt">{}</div>'.format(name),
)
).add_to(map_osm)
folium.CircleMarker(latlon, radius=5).add_to(map_osm)
map_osm = folium.Map(location=way_points['part1'], zoom_start=17)
for marker in marker_list:
add_waypoint(marker[0], marker[1])
map_osm
marker_list
[['A', [29.8670802716486, 121.5388744943008]], ['B', [29.86728839409328, 121.5384644978518]], ['A', [29.86760479960283, 121.5386485345583]], ['B', [29.86741570259075, 121.5390613102629]]]