R-Shiny Leaflet 右键单击​​上下文菜单

Ahm*_* M. 5 r leaflet shiny

我的 UI 输出中有一个 R-Shiny 应用程序和一张传单地图。我想设置一些东西,我可以右键单击地图,它会在光标坐标上打开一个上下文菜单,我可以在其中选择图标和输入文本。这将允许我在地图上放置自定义标记并命名它们。

observeEvent(input$map_right_click, {
showCustomMarkerMenu(location = (input$map_click$lat, input$map_click$lng)) //sample
addMarkers(lat = input$map_click$lat, lng = input$map_click$lng)
})
Run Code Online (Sandbox Code Playgroud)

Man*_*uel 0

您可以使用htmlwidgets::onRender和实现右键单击Shiny.setInputValue。可以htmlwidgets::onRender检索传单地图实例,您需要获取单击的坐标。接下来,Shiny.setInputValue您将坐标发送到闪亮的模块或应用程序,并触发您观察到的输入的更改事件observeEvent。

leaflet::leaflet() %>% 
leaflet::addTiles() %>%
htmlwidgets::onRender("
    function(el,x) {
        map = this;
        map.on('contextmenu', function(e) {
        var coords = {lng: e.latlng.lng, lat: e.latlng.lat}
        Shiny.setInputValue('map_right_click', coords);
    });
    }
")

shiny::observeEvent(input$map_right_click, {
    output$myLng<- renderText({ input$map_right_click$lng })
})
Run Code Online (Sandbox Code Playgroud)