我有两个区域地图层,我想为它们添加GeoJsonTooltip,但我一直收到错误提示: TypeError: __init__() missing 1 required positional argument: 'text'
我的当前代码如下。
import folium
import pandas as pd
import json
df_theft = pd.read_csv('PA_Theft.csv')
df_assualt = pd.read_csv('PA_Assualt.csv')
theft_json = json.load(open('theft_geojson.json'))
assualt_json = json.load(open('assualt_geojson.json'))
m = folium.Map(location=[41.20, -77.50], tiles="cartodbdark_matter", zoom_start=8.3)
theft = folium.Choropleth(
geo_data=theft_json,
data=df_theft,
columns=['county_name', 'rate'],
key_on='feature.properties.county_name',
fill_color='OrRd',
fill_opacity=0.9,
nan_fill_color='#ffffff',
nan_fill_opacity=0.9,
legend_name='Incident rate per 100,000 people',
highlight=True,
name='Theft'
).add_to(m)
folium.GeoJson(
theft_json,
tooltip=folium.features.Tooltip(fields=['feature.properties.county_name'])
).add_to(theft)
assualt = folium.Choropleth(
geo_data=assualt_json,
data=df_assualt,
columns=['county_name', 'rate'],
key_on='feature.properties.county_name',
fill_color='OrRd',
fill_opacity=0.9,
nan_fill_color='#ffffff',
nan_fill_opacity=0.9,
legend_name='Incident rate per 100,000 people',
highlight=True,
name='Assualt'
).add_to(m)
folium.GeoJson(
assualt_json,
tooltip=folium.features.Tooltip(fields=['feature.properties.county_name'])
).add_to(assualt)
folium.LayerControl().add_to(m)
m.save('Crime_Map.html')
print('Map created.')
我希望的最终结果是,当用户将鼠标悬停在宾夕法尼亚州的每个县上时,会触发工具提示弹出窗口,并显示来自geoJSON的以下信息。
示例geojson
"properties": {
"county_name": "ADAMS",
"incident": "Theft",
"arrests": 24,
"incident_count": 51,
"incident_total": 75,
"population": 102336,
"rate": 73.2879924953096
}
GeoJsonTooltip
类来使用 geojson 字段。常规的Tooltip
类只适用于简单文本。这就是您遇到的错误。GeoJsonTooltip
传递给由Choropleth
在幕后创建的GeoJson
对象:Choropleth(...).geojson.add_child(GeoJsonTooltip(...))
。或者在您的情况下:GeoJsonTooltip(....).add_to(theft.geojson)
。.geojson.add_child(GeoJsonTooltip(fields=['feature']['properties']['county_name'])).add_to(m)
,结果出现了这个错误NameError: name 'GeoJsonTooltip' is not defined
。这是否意味着 GeoJson 对象在内部没有被创建? - prime90