From eae7e7bff35ab8cb3b5d42ac9cd3832b8249d585 Mon Sep 17 00:00:00 2001 From: Millicool Date: Sun, 7 Dec 2025 16:22:18 +0100 Subject: [PATCH] Add Radio Button functionality to change map type --- IT Shiny App.R | 52 ++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) diff --git a/IT Shiny App.R b/IT Shiny App.R index ea21d89..f82d2ec 100644 --- a/IT Shiny App.R +++ b/IT Shiny App.R @@ -6,13 +6,24 @@ library(sf) crime_json <- fromJSON(file="C:\\Users\\milli\\Documents\\Datenbereinigung\\data.json") -geojson_data <- st_read("C:\\Users\\milli\\Documents\\Datenbereinigung\\geojson.json") -geojson_data <- st_transform(geojson_data, crs = 4326) + +geo_bezirke <- st_read("C:\\Users\\milli\\Documents\\Datenbereinigung\\geobezirke-parsed.json") +geo_bezirke <- st_transform(geo_bezirke, crs = 4326) + +geo_stadtteile <- st_read("C:\\Users\\milli\\Documents\\Datenbereinigung\\geostadtteile-parsed.json") +geo_stadtteile <- st_transform(geo_stadtteile, crs = 4326) + bezirke <- names(crime_json) ui <- page_fillable( layout_columns( card( + radioButtons( + inputId = "rd_maptype", + label = "Kartentyp", + choices = c("Bezirke", "Stadtteile"), + selected = "Bezirke" + ), selectInput( inputId = "drp_bezirk", label = "Bezirk", @@ -49,21 +60,52 @@ server <- function(input, output, session){ } }) + observeEvent(input$rd_maptype, { + maptype <- input$rd_maptype + mapproxy <- leafletProxy("hhmap") + + if (maptype == "Bezirke"){ + hideGroup(mapproxy, "layer_stadtteile") + showGroup(mapproxy, "layer_bezirke") + } + else { + hideGroup(mapproxy, "layer_bezirke") + showGroup(mapproxy, "layer_stadtteile") + + } + }) + output$hhmap <- renderLeaflet({ leaflet() %>% addProviderTiles(providers$CartoDB.Positron) %>% addPolygons( - data = geojson_data, + data = geo_bezirke, + group = "layer_bezirke", color = "#7bb5ab", fillColor = "#bdf0e7", weight = 1, - fillOpacity = 0.05, # Polygon fill transparency + fillOpacity = 0.4, # Polygon fill transparency highlightOptions = highlightOptions( color = "#103b57", weight = 4, bringToFront = TRUE ), ) %>% + addPolygons( + data = geo_stadtteile, + group = "layer_stadtteile", + color = "#7bb5ab", + fillColor = "#bdf0e7", + options = pathOptions(pane = "overlayPane"), # Use a leaflet option to ensure it's hidden + weight = 1, + fillOpacity = 0.4, # Polygon fill transparency + highlightOptions = highlightOptions( + color = "#103b57", + weight = 4, + bringToFront = TRUE + ), + ) %>% + setView( lng = 9.98716634776887, lat = 53.5488439196432, @@ -71,5 +113,7 @@ server <- function(input, output, session){ ) }) } +options(shiny.host = '0.0.0.0') +options(shiny.port = 8888) shinyApp(ui = ui, server = server)