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

5
我想在地图上放置一堆红色图标点,并在点击时弹出一些文本作为弹出窗口。 我需要使用 features.GeoJson 因为我还将在特定图层上进行搜索,因此无法使用 features.Marker。

我查看了这些示例:https://nbviewer.jupyter.org/github/python-visualization/folium/tree/master/examples/ 但是它们并没有说每个点的 properties 字典的哪个键可以更改此颜色。关于弹出窗口,即使我将其添加为子节点,也无效。

这里是我得到的东西

以下是代码内容:
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
1个回答

1
标准图标只是从 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


1
太好了!您不知道我在这上面花费了多少时间...虽然现在我无法添加搜索功能。因为 gj 没有被添加到地图上,如果我添加它,我将不得不针对每个位置进行指定。您如何添加它呢? - M. GENTILI
我会使用FeatureGroup。让我详细解释一下我的答案。 - Anatolii Suhanov
太棒了!谢谢 :) 你知道如果地图上有多个点具有相同的属性,是否有可能显示多个结果吗? - M. GENTILI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接