import streamlit as st import folium from streamlit_folium import folium_static from folium.plugins import MarkerCluster import time # Define California medical centers data california_med_centers = [ ('UCSF Medical Center', 37.7631, -122.4576, 'General medical and surgical', 'San Francisco'), ('Cedars-Sinai Medical Center', 34.0762, -118.3790, 'Heart specialty', 'Los Angeles'), ('Stanford Health Care', 37.4331, -122.1750, 'Teaching hospital', 'Stanford'), ('UCLA Medical Center', 34.0659, -118.4466, 'Research and teaching', 'Los Angeles'), ('Scripps La Jolla Hospitals', 32.8851, -117.2255, 'Multiple specialties', 'La Jolla'), ('Sharp Memorial Hospital', 32.7992, -117.1542, 'Trauma center', 'San Diego'), ('Huntington Hospital', 34.1330, -118.1475, 'Non-profit hospital', 'Pasadena'), ('Hoag Memorial Hospital', 33.6045, -117.8664, 'Community hospital', 'Newport Beach'), ('UCSD Medical Center', 32.7554, -117.1682, 'Academic health center', 'San Diego'), ('UC Davis Medical Center', 38.5539, -121.4554, 'Public academic health', 'Sacramento'), ('John Muir Medical Center', 37.9192, -122.0426, 'Heart care', 'Walnut Creek'), ('Santa Clara Valley Medical Center', 37.3121, -121.9769, 'County hospital', 'San Jose'), ('Kaiser Permanente San Francisco', 37.7741, -122.4179, 'Health maintenance organization', 'San Francisco'), ('City of Hope', 34.1285, -117.9665, 'Cancer center', 'Duarte'), ('UCI Medical Center', 33.7886, -117.8572, 'University hospital', 'Orange'), ('Good Samaritan Hospital', 34.0506, -118.2831, 'Private hospital', 'Los Angeles'), ('Los Angeles County General', 34.0581, -118.2917, 'Public hospital', 'Los Angeles'), ('California Pacific Medical Center', 37.7864, -122.4357, 'Private non-profit', 'San Francisco'), ('Sutter Roseville Medical Center', 38.7521, -121.2760, 'General medical and surgical', 'Roseville'), ('St. Joseph Hospital', 33.7821, -117.9188, 'Faith-based care', 'Orange') ] # Initialize session state for car position and movement if 'car_position' not in st.session_state: st.session_state.car_position = [37.7631, -122.4576] # Starting at UCSF Medical Center if 'is_moving' not in st.session_state: st.session_state.is_moving = False # Create a map centered on the car's initial position def create_map(): m = folium.Map(location=st.session_state.car_position, zoom_start=13) # Add medical center markers to a MarkerCluster marker_cluster = MarkerCluster().add_to(m) for center in california_med_centers: folium.Marker( location=[center[1], center[2]], popup=f'{center[0]}
Description: {center[3]}
City: {center[4]}', icon=folium.Icon(color='red') ).add_to(marker_cluster) # Add car marker folium.Marker( location=st.session_state.car_position, popup='Car', icon=folium.Icon(color='blue', icon='car', prefix='fa') ).add_to(m) return m # Function to move the car (simple simulation: moves toward a target) def move_car(): target = [34.0762, -118.3790] # Example: Moving toward Cedars-Sinai lat_step = (target[0] - st.session_state.car_position[0]) / 50 # Smooth transition lon_step = (target[1] - st.session_state.car_position[1]) / 50 st.session_state.car_position[0] += lat_step st.session_state.car_position[1] += lon_step # Display the map m = create_map() folium_static(m) st.markdown(""" # 🏥 California Medical Centers 🌆 The map above shows medical centers in California with a blue car marker. Use the controls below to move the car! """) # Car movement controls col1, col2 = st.columns(2) with col1: if st.button("Start Driving"): st.session_state.is_moving = True with col2: if st.button("Stop Driving"): st.session_state.is_moving = False # Simulate car movement if active if st.session_state.is_moving: move_car() st.rerun() # Rerun the app to update the map # Buttons to jump to medical centers for i in range(0, len(california_med_centers), 4): cols = st.columns(4) for j in range(4): if i + j < len(california_med_centers): with cols[j]: if st.button(california_med_centers[i + j][0]): st.session_state.car_position = [california_med_centers[i + j][1], california_med_centers[i + j][2]] st.rerun()