Sha*_*aun 5 python search plugins folium
我正在尝试将搜索功能添加到我使用 Folium 在 Python 中生成的地图中。我看到有一个方便的搜索插件可用,并且能够成功实施并将其添加到地图中。不幸的是,使用 FeatureGroup 作为层我的 FeatureGroup 填充了标记似乎无法让搜索带回结果。
我的假设是搜索功能将查询标记的工具提示和/或弹出属性以返回纬度/经度作为搜索值。我已经尝试将值 'tooltip' 手动提供给 Search 函数的 search_label 选项,但没有成功。
import pandas as pd
import folium
from folium.plugins import Search
def mapGenerator(data):
map = folium.Map()
fg = folium.FeatureGroup()
for index, row in data.iterrows():
marker = folium.Marker(location=[row['lat'], row['lon']],
popup=row['name'])
marker.add_to(fg)
fg.add_to(map)
Search(fg).add_to(map)
map.save('map.html')
data = pd.DataFrame({'name': ['first', 'second', 'third'], 'lat': [28.27724, 48.52228, 22.43949],
'lon':[-9.72904, 34.77667, 102.49105]})
mapGenerator(data)
Run Code Online (Sandbox Code Playgroud)
此代码生成一个地图,该地图绘制一些随机点,然后添加一个搜索框。我的预期和期望的结果是,如果我搜索“first”,或者即使我搜索“fir”(或某些变体),搜索栏将放大名称为“first”的坐标,但目前,没有结果不管怎样都找到了。
小智 0
import pandas as pd
import folium
from folium.plugins import Search
import geopandas as gpd
def mapGenerator(data):
# Create geometry from the coordinates
data['geometry'] = data.apply(lambda x: Point(x.lon,x.lat),axis=1)
# Convert to geopandas dataframe
gdf = gpd.GeoDataFrame(data, crs="EPSG:4326")
m = folium.Map()
# Create an individual FeatureGroup specific for the search. Set show=False to hide the points.
fg_search = folium.FeatureGroup(name='search', show=False)
m.add_child(fg_search)
search_input = fg_search.add_child(folium.GeoJson(
gdf))
searchbar = Search(
layer=search_input,
geom_type="Point",
placeholder="Search name",
collapsed=False,
search_label="name",
weight=1,
).add_to(m)
# Create all other FeatureGroups you would like to
fg = folium.FeatureGroup(name='FeatureGroup')
for index, row in data.iterrows():
marker = folium.Marker(location=[row['lat'], row['lon']],
popup=row['name'])
marker.add_to(fg)
fg.add_to(m)
# Add layer control
m.add_child(folium.LayerControl())
m.save('map.html')
data = pd.DataFrame({'name': ['first', 'second', 'third'], 'lat': [28.27724, 48.52228, 22.43949],
'lon':[-9.72904, 34.77667, 102.49105]})
mapGenerator(data)
Run Code Online (Sandbox Code Playgroud)