import leafmap.foliumap as leafmap import pandas as pd import streamlit as st def app(): st.title("Add Points from XY") sample_url = "https://raw.githubusercontent.com/giswqs/leafmap/master/examples/data/world_cities.csv" url = st.text_input("Enter URL:", sample_url) m = leafmap.Map(locate_control=True, plugin_LatLngPopup=False) if url: try: df = pd.read_csv(url) columns = df.columns.values.tolist() row1_col1, row1_col2, row1_col3, row1_col4, row1_col5 = st.columns( [1, 1, 3, 1, 1] ) lon_index = 0 lat_index = 0 for col in columns: if col.lower() in ["lon", "longitude", "long", "lng"]: lon_index = columns.index(col) elif col.lower() in ["lat", "latitude"]: lat_index = columns.index(col) with row1_col1: x = st.selectbox("Select longitude column", columns, lon_index) with row1_col2: y = st.selectbox("Select latitude column", columns, lat_index) with row1_col3: popups = st.multiselect("Select popup columns", columns, columns) with row1_col4: heatmap = st.checkbox("Add heatmap") if heatmap: with row1_col5: if "pop_max" in columns: index = columns.index("pop_max") else: index = 0 heatmap_col = st.selectbox("Select heatmap column", columns, index) try: m.add_heatmap(df, y, x, heatmap_col) except: st.error("Please select a numeric column") try: m.add_points_from_xy(df, x, y, popups) except: st.error("Please select a numeric column") except Exception as e: st.error(e) m.to_streamlit()