Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

92
Vistas
Los íconos de folletos personalizados no aparecen cuando se generan en un bucle

Estoy usando Leaflet para crear un proyecto que mostraría ciertos puntos de interés en el mapa, según la información del país especificada por el usuario. Tengo problemas para mostrar el icono y el atributo de título de estos marcadores en determinadas circunstancias.

Cuando uso este código, todo funciona exactamente como se esperaba. El ícono personalizado se muestra correctamente en el marcador y cuando paso el mouse sobre el marcador puedo ver el texto 'aeropuerto':

 let airports = L.markerClusterGroup({ showCoverageOnHover: false, }); const airportMarker = L.icon({ iconUrl: "media/plane-line.png", iconSize: [24, 24] }) airports.addLayer(L.marker([52.5, -0.09], { icon: airportMarker, title: "airport" }) map.addLayer(airports)

Sin embargo, estoy usando la API de tomtom para obtener las coordenadas y los nombres de los aeropuertos y luego completar los marcadores en el mapa. Para esto, estoy usando un bucle for y aquí es donde ocurre el problema. Este código genera las coordenadas correctas para cada aeropuerto, pero usa el ícono de marcador de folleto predeterminado y no muestra el atributo de título al pasar el mouse:

 // the data object is passed after successful ajax call let airports = L.markerClusterGroup({ showCoverageOnHover: false, }); const airportMarker = L.icon({ iconUrl: "media/plane-line.png", iconSize: [24, 24] }) for(let i = 0; i < Object.keys(data).length; i++) { const name = Object.keys(data)[i] const coordinates = Object.values(data)[i] airports.addLayer(L.marker(coordinates), { icon: airportMarker, title: name }) } map.addLayer(airports)

¡Cualquier ayuda o consejo sería apreciado!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

El problema era que no estaba creando un nuevo L.marker() para cada nuevo marcador. Este código solucionó el problema:

 // the data object is passed after successful ajax call let markers = L.markerClusterGroup({ showCoverageOnHover: false, }); const airportMarker = L.icon({ iconUrl: "media/plane-line.png", iconSize: [24, 24] }) for(let i = 0; i < Object.keys(data).length; i++) { const name = Object.keys(data)[i] const coordinates = Object.values(data)[i] const airport = new L.marker(coordinates, { // here is where my mistake lies icon: icon, title: name } markers.addLayer(airport) } map.addLayer(markers)

Gracias a esta publicación por una pista sobre lo que estaba haciendo mal.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda