Как интегрировать карты Google, помещающие API автозаполнения в поле местоположения в форме в потоке?Python

Программы на Python
Ответить
Anonymous
 Как интегрировать карты Google, помещающие API автозаполнения в поле местоположения в форме в потоке?

Сообщение Anonymous »

В настоящее время я пытаюсь создать приложение с потоковой подсветкой, которое имеет форму на боковой панели и карту в основной области.
Одним из полей формы является поле местоположения (название города), где я нахожусь. интеграция 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 ... d-in-a-for
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»