Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import folium | |
import numpy as np | |
from streamlit_folium import folium_static | |
# Load data | |
data = { | |
'Name': ['Location_A', 'Location_B', 'Location_C', 'Location_D', 'Location_E', | |
'Location_A', 'Location_B', 'Location_C', 'Location_D', 'Location_E', | |
'Location_A', 'Location_B', 'Location_C', 'Location_D', 'Location_E', | |
'Location_A', 'Location_B', 'Location_C', 'Location_D', 'Location_E', | |
'Location_A', 'Location_B', 'Location_C', 'Location_D', 'Location_E', | |
], | |
'latitude': np.random.uniform(40.7, 40.8, size=25), # Assuming latitude range between 40.7 and 40.8 | |
'longitude': np.random.uniform(-74.0, -73.9, size=25) # Assuming longitude range between -74.0 and -73.9 | |
} | |
# Create DataFrame | |
df = pd.DataFrame(data) | |
# Sidebar for user input | |
st.sidebar.title('Filters') | |
selected_column = st.sidebar.selectbox('Select Column', df.columns) | |
# Filter data based on user selection | |
filtered_data = pd.DataFrame(data) | |
# Display the filtered data | |
st.write('Filtered Data:') | |
st.write(filtered_data) | |
# Create a map object | |
m = folium.Map(location=(filtered_data['latitude'].mean(), filtered_data['longitude'].mean()), zoom_start=10) | |
# Add markers to the map | |
all_markers = folium.FeatureGroup(name='All Markers') | |
active_markers = folium.FeatureGroup(name='Active Markers', show=False) | |
inactive_markers = folium.FeatureGroup(name='Inactive Markers', show=False) | |
for index, row in filtered_data.iterrows(): | |
status_color = 'green' if index%2==0 else 'red' | |
html_content = f""" | |
<div style=" | |
display: inline-block; | |
background-color: white; | |
border: 2px solid black; | |
border-radius: 50%; | |
width: 20px; | |
height: 20px; | |
text-align: center; | |
line-height: 20px; | |
font-size: 8pt; | |
color: {status_color}; | |
">{index}</div> | |
""" | |
# Create a DivIcon with custom HTML content | |
icon = folium.DivIcon(html=html_content) | |
marker = folium.Marker([row['latitude'], row['longitude']], popup=row['Name'], icon=icon).add_to(m) | |
# #add to groups | |
# marker.add_to(all_markers) | |
# if index%2==0: | |
# marker.add_to(active_markers) | |
# else: | |
# marker.add_to(inactive_markers) | |
# # Add layers to the map | |
# all_markers.add_to(m) | |
# active_markers.add_to(m) | |
# inactive_markers.add_to(m) | |
# Add layer control to toggle marker visibility | |
folium.LayerControl().add_to(m) | |
polygon_coords = [ [np.random.uniform(40.7, 40.8, size=6)[i], np.random.uniform(-74.0, -73.9, size=6)[i]] for i in range(6)] | |
# Create a polygon object | |
polygon = folium.Polygon(locations=polygon_coords, color='blue', fill=True, fill_color='blue', fill_opacity=0.3) | |
# Add the tag to the polygon | |
popup_text = "This is my polygon" | |
popup = folium.Popup(popup_text, parse_html=True) | |
polygon.add_child(popup) | |
# Add the polygon to the map | |
m.add_child(polygon) | |
# Render the map | |
folium_static(m) |