Одним из полей формы является поле местоположения (название города), где я нахожусь. интеграция API автозаполнения из googlemaps. Я столкнулся со следующими проблемами:
- Ввод поля адреса приводит к отправке самой формы, и
- Предложения по места появляются в новом поле, которое находится под исходным полем, тогда как я бы предпочел, чтобы предложения автозаполнения представляли собой раскрывающийся список в том же поле, который можно выбрать и использовать в качестве окончательного ввода для поля местоположения.
Код: Выделить всё
import streamlit as st
import googlemaps
from streamlit_folium import st_folium
import folium
import requests
# Google Maps API key
# API_KEY = '' # Add your Google API key here
gmaps = googlemaps.Client(key=API_KEY)
def get_place_suggestions(input_text):
url = "https://maps.googleapis.com/maps/api/place/autocomplete/json"
params = {
'input': input_text,
'key': API_KEY,
'types': 'geocode', # Optional: Specify the type of places you want
}
response = requests.get(url, params=params)
if response.status_code == 200:
predictions = response.json().get('predictions', [])
return [prediction['description'] for prediction in predictions]
else:
st.error("Error fetching data from Google API")
return []
def sidebarform():
with st.form("user_data"):
# Get user input
location_input = st.text_input(label="Location", value="")
# Fetch suggestions based on user input
suggestions = get_place_suggestions(location_input) if location_input else []
# Show suggestions as a selectbox
location = st.selectbox("Select a location", options=suggestions)
activity = st.multiselect(
"Select from the list",
["A", "B", "C"]
)
submitted = st.form_submit_button("Submit")
if submitted:
st.write("Location:", location)
st.write("Activity:", activity)
return
# Main map area
datamap = folium.Map(location=[20.5937, 78.9629], zoom_start=3)
st_data = st_folium(datamap)
# Sidebar form
with st.sidebar:
userdata = sidebarform()
[img]https:// i.sstatic.net/wi8oFB3Y.png[/img]
Как можно реализовать эту функциональность?
Большое спасибо!
Подробнее здесь: https://stackoverflow.com/questions/791 ... -a-form-in
Мобильная версия