Closed mennodekker closed 9 years ago
@mennodekker, for the mere mortal, could you provide a quick example on how to use the click event either on the server or client side (or both). I'm migrating from @jcheng5 leaflet to @rstudio leaflet package and having difficulties replicating the onclick and onmouseover events using this version. That'd be really helpful, thanks.
I did the same thing. The problem I had was that for geojson layers the mapid is not set. The work around until it is fixed is to use undefined.
As snippet of code that works with current implentation:
For server.R (notice the normal map click uses myMap and geosjon undefined)
Lmap = leaflet() %>% setView(5.266007882805511, 16.5234375, zoom = 1.5)
observe({
evt <- input$myMap_click
if (is.null(evt))
return()
isolate({
# An empty part of the map was clicked.
# Null out the selected feature.
values$selectedFeature <- NULL
})
})
observe({
evt <- input$undefined_geojson_click
if (is.null(evt))
return()
isolate({
# A GeoJSON feature was clicked. Save its properties
# to selectedFeature.
values$selectedFeature <- evt$properties
})
})
Lmap = Lmap %>% addGeoJSON(geo)
output$myMap <- renderLeaflet(Lmap)
For ui.R
leafletOutput('myMap', width="100%", 380)
Perfect, thanks so much!
What is the equivalent method if features are loaded with addPolygons() instead of addGeoJSON()? Would input$myMap_click
and input$myMap_mouseover
return the polygon layerId?
I added my map using the leafletOutput() and leaflet() functions. In my server.R I add a geoJson layer using:
The features show up fine, but I can not track a click on the feature. Some debugging learned that in the leaflet.js in the geoJSON method it tries to register a click on the self.id (mapid) but it is not present at that time so it registers an "undefined" mapid.