Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unable to use click on a geojson feature #35

Closed
mennodekker opened this issue Jan 26, 2015 · 3 comments
Closed

Unable to use click on a geojson feature #35

mennodekker opened this issue Jan 26, 2015 · 3 comments
Labels
type: bug Maintainers have validated that it is a real bug in the project code

Comments

@mennodekker
Copy link

I added my map using the leafletOutput() and leaflet() functions.
In my server.R I add a geoJson layer using:

map = map %>%   addGeoJSON(features)

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.

@mbacou
Copy link

mbacou commented Jan 29, 2015

@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.

@mennodekker
Copy link
Author

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)

@mbacou
Copy link

mbacou commented Jan 30, 2015

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?

@yihui yihui closed this as completed in b486ab4 Mar 20, 2015
@yihui yihui added the type: bug Maintainers have validated that it is a real bug in the project code label Mar 20, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: bug Maintainers have validated that it is a real bug in the project code
Projects
None yet
Development

No branches or pull requests

3 participants