54 lines
2.0 KiB
Python
54 lines
2.0 KiB
Python
import folium
|
|
|
|
|
|
class SwissMap:
|
|
def __init__(self) -> None:
|
|
self.m = folium.Map(location=[46.8132, 8.2242], tiles='OpenStreetMap', zoom_start=6.5, min_zoom = 6, max_zoom = 12)
|
|
|
|
|
|
# Returns travel map of customer as html string
|
|
def travel_history_map(self, customer_id, travel_history):
|
|
local_m = self.m
|
|
for e in travel_history:
|
|
place, coordinates = e.location_name, e.location_coordinates
|
|
folium.Marker(
|
|
location=coordinates, # coordinates for the marker
|
|
popup=place, # pop-up label for the marker
|
|
icon=folium.Icon(color="red")
|
|
).add_to(local_m)
|
|
local_m.save(f'static/travelhistorymap_customer{customer_id}.html')
|
|
return(f'static/travelhistorymap_customer{customer_id}.html')
|
|
|
|
|
|
# own_location and destination are tuples in form (coordinates, place)
|
|
def destination_map(self, customer_id, own_location, destination):
|
|
local_m = self.m
|
|
folium.Marker(
|
|
location=own_location[1], # coordinates for the marker
|
|
popup=own_location[0], # pop-up label for the marker
|
|
icon=folium.Icon(color="blue")
|
|
).add_to(local_m)
|
|
folium.Marker(
|
|
location=destination[1], # coordinates for the marker
|
|
popup=destination[0], # pop-up label for the marker
|
|
icon=folium.Icon(color="red")
|
|
).add_to(local_m)
|
|
local_m.save(f'static/destinationmap_customer={customer_id}_destination{destination[0]}.html')
|
|
return(f'static/destinationmap_customer={customer_id}_destination{destination[0]}.html')
|
|
|
|
|
|
|
|
# Working examples for travel history map and destination map
|
|
"""
|
|
# Hard coded location list
|
|
location_list = [('Center of Switzerland' , [46.8132, 8.2242]), ('Zermatt', [46.11654, 7.445683])]
|
|
customer_id = 235
|
|
|
|
# Travel history
|
|
thmap = SwissMap()
|
|
thmap.travel_history_map(customer_id, location_list)
|
|
|
|
# Destination
|
|
dmap = SwissMap()
|
|
dmap.destination_map(customer_id, location_list[0], location_list[1])
|
|
""" |