Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Marker mouse click event in R leaflet for shiny

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.

like image 762
RCG Avatar asked Mar 09 '15 09:03

RCG


1 Answers

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.

like image 76
SamanthaDS Avatar answered Sep 17 '22 03:09

SamanthaDS