Estoy desarrollando cosas muy interesantes con leaftlet en R y quería poner unos breves apuntes por si a alguien le sirvieran. En Stackoverflow y otras webs al uso tenéis mucha más ayuda y código de mayor interés pero en pocas líneas espero sentar las bases de uso de leaflet. Para ilustrar el ejemplo me he descargado unos datos de datos.gob con las coordenadas de los parques de bomberos de Madrid Capital, la idea es representar estos puntos en un mapa. Lo primero es descargar los datos y ponerlos en una ubicación de nuestro equipo:
bomberos <- read.csv("C:\\temp\\Personales\\wordpress\\211642-0-bomberos-parques.csv", sep=';') bomberos <- bomberos %>% select(NOMBRE, LATITUD, LONGITUD)
Nos hemos quedado sólo con las variables que nos interesa representar en el mapa de leaflet que vamos a crear con este sencillo código que posteriormente os resumo:
library(leaflet) icono <- makeIcon(iconUrl = "https://www.freeiconspng.com/uploads/burn-burning-fire-flame-heat-icon--icon-search-engine-20.png", iconWidth = 18, iconHeight = 18) leaflet() %>% addTiles() %>% setView( lng = mean(bomberosLONGITUD) , lat = mean(bomberosLATITUD), zoom = 10) %>% addProviderTiles(providersStamen.TonerLite, options = providerTileOptions(noWrap = F)) %>% addMarkers(lat = bomberosLATITUD, lng = bomberosLONGITUD, label = bomberosNOMBRE, icon = icono)
Por partes:
- Creación del icono personalizado mediante makeIcon y leemos de una web con iconos gratis como es freeiconspng
- leaflet() y empezamos a hacer un mapa con nuestro «tidycode»
- addTiles() nos permite ir añadiendo elementos a nuestro mapa
- setView centra el mapa en unas coordenadas, en este caso empleamos la media de la latitud y la longitud de los parques de bomberos
- addProviderTiles añade una capa a nuestro mapa en función de los distintos proveedores, yo siempre trabajo con esta capa por la claridad, hay muchas.
- addMarkers es la parte más interesante porque es la que nos permite añadir una marca en función de la latitud y la longitud, etiquetamos la marca con el nombre del parque de bomberos y como icono usamos el que creamos con la función makeIcon
Resultado más que digno con pocas líneas de código:
Hola, una pregunta, sabrías como ubicar 3 puntos distintos, digamos una estación de bomberos, un hospital y un parque metropolitano, y cada uno con su respectivo ícono?
Hola, puedes poner todos los addmarkers que quieras, en icon cambias el icono. Si no pones icon te sale un punto y juegas con la opción color.