Folium GeoJson无法更改图标(标记)颜色并激活弹出窗口

2024-09-23 00:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在地图上有一堆点,有一个红色图标,当你点击它时会弹出一些文本。我需要使用features.GeoJson,因为我还将在特定层上创建搜索,所以我不能使用features.Marker

我检查了这个例子:https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/但是他们没有说每个点的属性字典的哪个键改变了这个颜色。关于弹出窗口,即使我作为一个孩子添加它,它也不起作用

Here is what I get

代码如下:

import folium
from folium import features
m = folium.Map([0, 0], zoom_start=1)

points_ = {'type': 'FeatureCollection',
 'features': [{'type': 'Feature',
   'properties': {'Codice': 500732, 'Categoria': 'D1', 'Cluster': 3},
   'geometry': {'type': 'Point', 'coordinates': [12.34117475, 45.75345246]},
   'id': '0'},
  {'type': 'Feature',
   'properties': {'Codice': 500732, 'Categoria': 'A2', 'Cluster': 3},
   'geometry': {'type': 'Point', 'coordinates': [12.34117475, 45.75345246]},
   'id': '1'}]}

pp = folium.Popup("hello")
ic = features.Icon(color="red")
gj = folium.GeoJson(points)#, tooltip=tooltip)

gj.add_child(ic)
gj.add_child(pp)
m.add_child(gj)

m

Tags: importaddchildgeojsontypepropertiesfeaturepoints
1条回答
网友
1楼 · 发布于 2024-09-23 00:16:59

标准图标仅从https://cdn.jsdelivr.net/npm/leaflet@1.6.0/dist/images/marker-icon.png加载

因此,您可以使用类似this的方法更改其颜色

或者您可以使用不同的内置图标:

points = {'type': 'FeatureCollection',
 'features': [{'type': 'Feature',
   'properties': {'Codice': 500732, 'Categoria': 'D1', 'Cluster': 3},
   'geometry': {'type': 'Point', 'coordinates': [12.34117475, 45.75345246]},
   'id': '0'},
  {'type': 'Feature',
   'properties': {'Codice': 500732, 'Categoria': 'A2', 'Cluster': 3},
   'geometry': {'type': 'Point', 'coordinates': [12.32117475, 45.72345246]},
   'id': '1'}]}
   
gj = folium.GeoJson(points)

feature_group = folium.FeatureGroup('markers')

for feature in gj.data['features']:
    if feature['geometry']['type'] == 'Point':
        folium.Marker(location=list(reversed(feature['geometry']['coordinates'])),
            icon=folium.Icon(color='red'),
            popup='Hello',
            Categoria=feature['properties']['Categoria']
        ).add_to(feature_group)

feature_group.add_to(m)

Search(
    layer=feature_group,
    search_label="Categoria",
).add_to(m)

m

enter image description here

相关问题 更多 >