Показывать разные всплывающие окна для разных полигонов в GeoJSON [Folium] [Python] [Map] - PullRequest
0 голосов
/ 08 февраля 2019

Я использую фолиум для визуализации зон в городе.

Мой GeoJSON - это FeatureCollection с несколькими полигонами в качестве объектов.Я хочу иметь возможность добавлять разные всплывающие окна для разных полигонов в файле.Идея состоит в том, чтобы показать имена различных полигонов в файле GEOJSON.

Мне удалось добавить всплывающее окно для полного geoJSON.Однако я хочу иметь возможность добавлять разные всплывающие окна для разных полигонов (по сути, название функции).

folium.GeoJson(gurgaon_subzone,name='geojson').add_child(folium.Popup("Gurgaon")).add_to(m)

1 Ответ

0 голосов
/ 18 февраля 2019

Для этого есть обходной путь.Вам нужно перебрать каждый элемент geoJson и создать новый geojson для каждого.Затем добавьте всплывающее окно для каждой функции geoJson.Затем объедините все элементы в слое.В моем коде полный geoJson data_geojson_dict

layer_geom = folium.FeatureGroup(name='layer',control=False)

for i in range(len(data_geojson_dict["features"])):
    temp_geojson = {"features":[data_geojson_dict["features"][i]],"type":"FeatureCollection"}
    temp_geojson_layer = folium.GeoJson(temp_geojson,
                   highlight_function=lambda x: {'weight':3, 'color':'black'},
                    control=False,
                    style_function=lambda feature: {
                   'color': 'black',
                   'weight': 1},
                    tooltip=folium.features.GeoJsonTooltip(fields=list_tooltip_vars,
                                        aliases=[x.capitalize()+":" for x in list_tooltip_vars], 
                                          labels=True, 
                                          sticky=False))
    folium.Popup(temp_geojson["features"][0]["properties"]["productor"]).add_to(temp_geojson_layer)
    temp_geojson_layer.add_to(layer_geom)

layer_geom.add_to(m)
folium.LayerControl(autoZIndex=False, collapsed=True).add_to(m)
...