How can I receive a mouse click event on a marker in a leaflet map in R? I'm using the RStudio/leaflet and running through Shiny.
I'd like to get the value of a marker (e.g., ID) and use that to update a sidebarPanel.
You want to use input$MAPID_marker_click
. See the example below.
library(shiny) library(leaflet) latitude <- c(35.94077, 35.83770, 35.84545, 35.81584, 35.79387, 36.05600) longitude <- c(-78.58010, -78.78084, -78.72444, -78.62568, -78.64262, -78.67600) radius<-c(15, 12, 12, 12, 12, 15) ids<-c("a", "b", "c", "d", "e", "f") shinyApp( ui = fluidPage( fluidRow( leafletMap( "map", "100%", 400, initialTileLayer = "//{s}.tiles.mapbox.com/v3/jcheng.map-5ebohr46/{z}/{x}/{y}.png", initialTileLayerAttribution = HTML('Maps by <a href="http://www.mapbox.com/">Mapbox</a>'), options=list( center = c(37.45, -93.85), zoom = 4, maxBounds = list(list(17, -180), list(59, 180))))), fluidRow(verbatimTextOutput("Click_text"))), server = function(input, output, session){ map = createLeafletMap(session, 'map') session$onFlushed(once=T, function(){ map$addCircleMarker(lat = latitude, lng = longitude, radius = radius, layerId=ids) }) observe({ click<-input$map_marker_click if(is.null(click)) return() text<-paste("Lattitude ", click$lat, "Longtitude ", click$lng) text2<-paste("You've selected point ", click$id) map$clearPopups() map$showPopup( click$lat, click$lng, text) output$Click_text<-renderText({ text2 }) }) } )
The argument layerId
in the addCircleMarker
function passes the ids
to the click$id
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With