es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Double Marker Folium

Quiero tener marcadores personalizados en el mapa y ventanas emergentes únicas para cada punto marcado.
El código a continuación me da lo que quiero, excepto por el hecho de que hay dos marcadores para cada punto, el mío personalizado y el predeterminado. ¿Cómo puedo dejar solo el mío? ¿Por qué hay dos marcadores?

        fg_other_atms = folium.FeatureGroup(name="Otros ATMs", show=False)

    geometry = gpd.points_from_xy(atm_other.longitude, atm_other.latitude)
    geo_df = gpd.GeoDataFrame(atm_other[['latitude', 'longitude', 'city_id', 
                                         'region_id', 'trans_cnt','trans_amt']],
                                          geometry=geometry)
    geo_df = geo_df.set_crs(epsg=4326, inplace=True)
    gjson = folium.GeoJson(geo_df)

    for feature in gjson.data['features']:
        folium.Marker(location=list(reversed(feature['geometry']['coordinates'])),
                      icon=folium.features.CustomIcon('Icons/red.png', icon_size=(26, 35))
                       ).add_to(fg_other_atms)
        if feature['geometry']['type'] == 'Point':
                b = folium.GeoJson(feature['geometry'])   
                popup = '<b>Número de operaciones:</b>    ' + str(feature['properties']['trans_cnt'])+ ' '  + '<br><b>Monto retirado:</b>    ' + str(feature['properties']['trans_amt'])
                b.add_child(folium.Popup(popup))
                fg_other_atms.add_child(b)

    m.add_child(fg_other_atms)  
Tags:  , ,

Answer

  1. Avatar for davy.ai

    La razón por la cual existen dos marcadores para cada punto es porque el código está agregando tanto un marcador personalizado como un marcador predeterminado al mapa. Para eliminar el marcador predeterminado, simplemente elimine la línea de código que crea el folium.GeoJson.

    Primero, elimine esta línea:

    b = folium.GeoJson(feature['geometry'])
    

    Luego, modifique la siguiente línea para que se vea así:

    marker = folium.Marker(location=list(reversed(feature['geometry']['coordinates'])),
                          icon=folium.features.CustomIcon('Icons/red.png', icon_size=(26, 35)))
    popup_html = f'<b>Cantidad de Operaciones:</b> {feature['properties']['trans_cnt']} <br><b>Monto Retirado:</b> {feature['properties']['trans_amt']}'
    popup = folium.Popup(popup_html)
    marker.add_child(popup)
    fg_other_atms.add_child(marker)
    

    Esto creará un marcador personalizado y una ventana emergente única para cada punto, sin agregar el marcador predeterminado.

Comments are closed.