Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| from bokeh.models.widgets import Button | |
| from bokeh.models import CustomJS | |
| from streamlit_bokeh_events import streamlit_bokeh_events | |
| import leafmap.foliumap as leafmap | |
| def app(): | |
| loc_button = Button(label="Get Device Location", max_width=150) | |
| loc_button.js_on_event( | |
| "button_click", | |
| CustomJS( | |
| code=""" | |
| navigator.geolocation.getCurrentPosition( | |
| (loc) => { | |
| document.dispatchEvent(new CustomEvent("GET_LOCATION", {detail: {lat: loc.coords.latitude, lon: loc.coords.longitude}})) | |
| } | |
| ) | |
| """ | |
| ), | |
| ) | |
| result = streamlit_bokeh_events( | |
| loc_button, | |
| events="GET_LOCATION", | |
| key="get_location", | |
| refresh_on_update=False, | |
| override_height=75, | |
| debounce_time=0, | |
| ) | |
| if result: | |
| if "GET_LOCATION" in result: | |
| loc = result.get("GET_LOCATION") | |
| lat = loc.get("lat") | |
| lon = loc.get("lon") | |
| st.write(f"Lat, Lon: {lat}, {lon}") | |
| m = leafmap.Map(center=(lat, lon), zoom=16) | |
| m.add_basemap("ROADMAP") | |
| popup = f"lat, lon: {lat}, {lon}" | |
| m.add_marker(location=(lat, lon), popup=popup) | |
| m.to_streamlit() | |