Spaces:
Runtime error
Runtime error
File size: 2,169 Bytes
f573549 66ab386 03a899a 66ab386 ca4f05f f573549 03a899a f573549 66ab386 3a270e4 03a899a f1fed16 f573549 f1fed16 f573549 f1fed16 f573549 f1fed16 f573549 f1fed16 66ab386 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
import streamlit as st
from streamlit_folium import folium_static
import googlemaps
import folium
import os
from datetime import datetime
def get_directions(source, destination):
now = datetime.now()
directions_info = {}
modes = ['driving', 'walking', 'bicycling', 'transit']
for mode in modes:
directions_result = gmaps.directions(source, destination, mode=mode, departure_time=now)
if directions_result:
directions_info[mode] = directions_result[0]['legs'][0]['steps']
else:
directions_info[mode] = "No available routes."
return directions_info
def render_folium_map(source, destination):
source_location = gmaps.geocode(source)
destination_location = gmaps.geocode(destination)
source_coords = source_location[0]['geometry']['location']
dest_coords = destination_location[0]['geometry']['location']
m = folium.Map(location=[source_coords['lat'], source_coords['lng']], zoom_start=10)
folium.Marker([source_coords['lat'], source_coords['lng']], tooltip='Source').add_to(m)
folium.Marker([dest_coords['lat'], dest_coords['lng']], tooltip='Destination').add_to(m)
folium_static(m)
# Initialize Google Maps
gmaps = googlemaps.Client(key=os.getenv('GOOGLE_KEY'))
# Streamlit app
st.title('๐บ๏ธ Google Maps Directions')
st.sidebar.header('๐ User Input Features')
source_location = st.sidebar.text_input("Source Location", "Mound, MN")
destination_location = st.sidebar.text_input("Destination Location", "Minneapolis, MN")
if st.sidebar.button('Get Directions'):
directions_info = get_directions(source_location, destination_location)
for mode, directions in directions_info.items():
st.write(f"## Directions by {mode.capitalize()} ๐ฃ๏ธ")
if directions == "No available routes.":
st.write("โ " + directions)
else:
for i, step in enumerate(directions):
st.write(f"๐ฃ {i + 1}. {step['html_instructions']}")
show_map_button = st.button('Show Directions on Map ๐บ๏ธ')
if show_map_button:
render_folium_map(source_location, destination_location)
|