File size: 4,438 Bytes
99eaf1d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
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'<b>{center[0]}</b><br>Description: {center[3]}<br>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()