Files
shiny-app/IT Shiny App.R

76 lines
1.8 KiB
R

library(rjson)
library(shiny)
library(bslib)
library(leaflet)
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)
bezirke <- names(crime_json)
ui <- page_fillable(
layout_columns(
card(
selectInput(
inputId = "drp_bezirk",
label = "Bezirk",
choices = bezirke),
selectInput(
inputId = "drp_stadtteil",
label = "Stadtteil",
choices = NULL,
)
),
leafletOutput("hhmap"),
card("Card rechts"),
col_widths = c(3, 6, 3)
)
)
server <- function(input, output, session){
observeEvent(input$drp_bezirk, {
sel_bezirk <- input$drp_bezirk
if (sel_bezirk != "") {
# Neue Auswahlmöglichkeiten bestimmen
sel_stadtteile <- names(crime_json[[sel_bezirk]])
# Zweites SelectInput-Feld aktualisieren
updateSelectInput(
session,
inputId = "drp_stadtteil",
choices = sel_stadtteile,
selected = sel_stadtteile[1] # Wählt den ersten Eintrag vor
)
}
})
output$hhmap <- renderLeaflet({
leaflet() %>%
addProviderTiles(providers$CartoDB.Positron) %>%
addPolygons(
data = geojson_data,
color = "#7bb5ab",
fillColor = "#bdf0e7",
weight = 1,
fillOpacity = 0.05, # Polygon fill transparency
highlightOptions = highlightOptions(
color = "#103b57",
weight = 4,
bringToFront = TRUE
),
) %>%
setView(
lng = 9.98716634776887,
lat = 53.5488439196432,
zoom = 11
)
})
}
shinyApp(ui = ui, server = server)