Я создаю карту листовки, отображающую различные районы местных советов с использованием полигонов. Я создал блестящее приложение, которое отображает выходные данные и регистрирует события кликов. Эти события клика сохранят значения lat, long и id, чтобы их можно было сопоставить с идентичным фреймом данных и использовать для вызова сводной статистики:
, т. Е. Щелкните область совета x на карте, и она вернет название этого клика. событие в виде строки, которая затем будет использоваться для получения сопоставления сводной статистики из таблицы данных с более обширной совокупной информацией.
Я пытаюсь назначить каждому полигону уникальный идентификатор на основе входной информации в виде большого фрейма данных пространственных полигонов.
bins <- c(2000, 2500, 3000, 3500, 4000, 4500, 5000, Inf)
pal <- colorBin("YlOrRd", domain = map_data$rank, bins = bins)
# Plot mean SIMD rank for each council area
map <- leaflet(map_data) %>%
setView(-3.2008, 55.9452, 7) %>%
addProviderTiles("CartoDB.Positron",
options= providerTileOptions(opacity = 0.99)) %>%
addPolygons(fillColor = ~pal(rank),
layerId = ~map_data$names, # Here is the layerId
weight = 2,
opacity = 1,
color = "white",
dashArray = "3",
fillOpacity = 0.7,
highlight = highlightOptions(
weight = 2,
color = "#666",
dashArray = "",
fillOpacity = 0.7,
bringToFront = TRUE),
label=~paste(map_data$names,
round(map_data$rank)),
labelOptions = labelOptions(textsize = "15px",
direction = "auto"))
Блестящий сервер вызывает это как:
observeEvent(input$map_click, {
click <- input$map_click
print(click$id)
}
Используя этот подход, он может распечатать широту и долготу события click на консоль, но выдает NULL для идентификатора.
Меня смущает это, так как вызов данных $ names отлично работает для меток, как вы можете видеть в функции выше. Все имена уникальны.