У меня есть основная фолиевая тепловая карта, которая показывает местоположения в виде CircleMarker и слой HeatMap сверху, как показано ниже.
Я хотел добавить поискфункциональность в моей карте, поэтому я преобразовал свой фрейм данных pandas в формат GeoJson, чтобы я мог передать его.
class folium.plugins.Search (layer, search_label = None, search_zoom = None, geom_type = 'Point ', position =' topleft ', placeholder =' Search ', свернутый = False, ** kwargs) Основы: branca.element.MacroElement
Добавляет инструмент поиска на вашу карту.
Параметры: layer (GeoJson, TopoJson, FeatureGroup, объект класса MarkerCluster.) - Слой карты для индексации в
Мне удалось преобразовать мой Pandas DataFrame в GeoJson, используя приведенный ниже код.
df_json = pd.read_csv("C:\\py\\folium\\NE Task 1\\json.csv").dropna(how="any")
# convert lat-long to floats and change address from ALL CAPS to Regular Capitalization
df_json['latitude'] = df_json['latitude'].astype(float)
df_json['longitude'] = df_json['longitude'].astype(float)
df_json['Site Name'] = df_json['Site Name'].str.title()
# we don't need all those columns - only keep useful ones
useful_cols = ['Site ID', 'Site Name', 'latitude', 'longitude']
df_subset = df_json[useful_cols]
# drop any rows that lack lat/long data
df_geo = df_subset.dropna(subset=['latitude', 'longitude'], axis=0, inplace=False)
def df_to_geojson(df_json, properties, lat='latitude', lon='longitude'):
geojson = {'type': 'FeatureCollection', 'features': []}
# loop through each row in the dataframe and convert each row to geojson format
for _, row in df_json.iterrows():
# create a feature template to fill in
feature = {'type': 'Feature',
'properties': {},
'geometry': {'type': 'Point', 'coordinates': []}}
# fill in the coordinates
feature['geometry']['coordinates'] = [row[lon], row[lat]]
# for each column, get the value and add it as a new feature property
for prop in properties:
feature['properties'][prop] = row[prop]
# add this feature (aka, converted dataframe row) to the list of features inside our dict
geojson['features'].append(feature)
return geojson
geojson_dict = df_to_geojson(df_geo, properties=useful_cols)
geojson_str = json.dumps(geojson_dict, indent=2)
folium.plugins.Search(data=geojson_dict, geom_type='Point',
search_zoom=14, search_label='Site ID').add_to(map)
После выполнения этой функции поиска работает должным образом, как я хотел, но на ТОПе отображается маркер, который я не могу скрыть, как показано ниже.
Пожалуйста, помогите мне руководство, как я могуИдея этого маркера и сохранить GeoJson нетронутым, чтобы я мог использовать его для функции поиска.Я пытался сделать его прозрачным, изменить непрозрачность GeoJson с помощью решений, которые я нашел через stackOverflow, но ничего не работает.
Заранее спасибо за ваше время и извините за длинный пост.
С наилучшими пожеланиями