# Definir la ruta del shapefile
shapefile_path <- "C:/Users/Daniel Restrepo/Desktop/DAP FEBRERO2/LimiteComunaCorregimiento_2014.shp"

# Verificar que el archivo exista
if (!file.exists(shapefile_path)) {
  stop("Error: No se encontró el archivo del shapefile. Verifica la ruta y la existencia del archivo.")
}

# Cargar el shapefile
medellin_map <- st_read(shapefile_path)
## Reading layer `LimiteComunaCorregimiento_2014' from data source 
##   `C:\Users\Daniel Restrepo\Desktop\DAP FEBRERO2\LimiteComunaCorregimiento_2014.shp' 
##   using driver `ESRI Shapefile'
## Simple feature collection with 23 features and 7 fields
## Geometry type: MULTIPOLYGON
## Dimension:     XY
## Bounding box:  xmin: -75.71931 ymin: 6.162904 xmax: -75.47185 ymax: 6.374872
## Geodetic CRS:  WGS 84
# Crear los datos del IMCV con los códigos de cada comuna y corregimiento
data <- data.frame(
  Cod = c(1, 90, 2, 3, 8, 60, 13, 6, 50, 4, 70, 80, 7, 9, 5, 15, 10, 16, 12, 11, 14),
  Comunas = c(
    "Popular", "Santa Elena", "Santa Cruz", "Manrique", "Villa Hermosa",
    "San Cristóbal", "San Javier", "Doce de Octubre", "San Sebastián de Palmitas",
    "Aranjuez", "Altavista", "San Antonio de Prado", "Robledo", "Buenos Aires",
    "Castilla", "Guayabal", "La Candelaria", "Belén", "La América",
    "Laureles Estadio", "El Poblado"
  ),
  IMCV_2024 = c(35.07, 35.65, 37.77, 38.10, 38.95, 40.72, 41.23, 41.50, 42.11, 43.79,
                44.32, 44.64, 45.07, 47.98, 48.41, 52.40, 52.96, 54.77, 60.09, 67.80, 76.26)
)

# Normalizar nombres para que coincidan con el shapefile
data <- data %>%
  mutate(Comunas = case_when(
    Comunas == "San Cristóbal" ~ "Corregimiento de San Cristóbal",
    Comunas == "San Sebastián de Palmitas" ~ "Corregimiento de San Sebastián de Palmitas",
    Comunas == "Altavista" ~ "Corregimiento de Altavista",
    Comunas == "San Antonio de Prado" ~ "Corregimiento de San Antonio de Prado",
    Comunas == "Santa Elena" ~ "Corregimiento de Santa Elena",
    TRUE ~ Comunas
  ))

# Unir datos con el shapefile
data_map <- medellin_map %>%
  left_join(data, by = c("NOMBRE" = "Comunas"))

# Calcular los centroides de cada comuna/corregimiento para posicionar los valores de IMCV
data_map$centroid <- st_centroid(data_map$geometry)
coords <- st_coordinates(data_map$centroid)

# Crear una paleta de colores con intervalos definidos
pal <- colorBin(palette = "YlOrRd", domain = data_map$IMCV_2024, bins = 5)

# Crear el mapa interactivo en Leaflet con la leyenda al lado y los valores del IMCV en cada territorio
leaflet(data_map) %>%
  addProviderTiles("OpenStreetMap") %>%
  addPolygons(
    fillColor = ~pal(IMCV_2024),
    weight = 2,
    color = "black",
    fillOpacity = 1,
    label = ~paste("Comuna: ", NOMBRE, "<br>IMCV: ", IMCV_2024)
  ) %>%
  addLegend(
    pal = pal,
    values = data_map$IMCV_2024,
    title = "Índice Multidimensional de Condiciones de Vida (IMCV)",
    position = "topright",
    opacity = 1
  ) %>%
  # Agregar los valores del IMCV en cada territorio SIN recuadros
  addLabelOnlyMarkers(
    lng = coords[, 1], lat = coords[, 2], 
    label = as.character(round(data_map$IMCV_2024, 2)),  # Redondea el IMCV a 2 decimales
    labelOptions = labelOptions(
      noHide = TRUE,
      direction = "center",
      textOnly = TRUE,  # Se elimina el recuadro
      style = list(
        "color" = "black",  # Texto en negro
        "font-size" = "8px",
        "font-weight" = "bold"
      )
    )
  )