E K*_*ith 4 r rstudio leaflet shiny
在一个闪亮的应用程序中使用RStudio Leaflet包我已经能够实现我所寻找的所有功能,除非在点击后取消选择标记对象.
更具体地说,在单击任何标记之前,输入$ map_click_id值设置为NULL.单击标记后,将使用该标记的数据(ID,lat,lng,nonce)进行更新.我想设置地图,以便当用户点击地图中不是标记的任何区域时,输入$ map_click_id将重置为NULL,直到单击另一个标记.
我已经尝试了很多解决方案,例如比较标记点击和地图点击的点击次数,但标记点击变量,一旦设置为非NULL值,每次点击地图时都会更新,无论是什么它是否在标记上,所以这不起作用.
这里的任何帮助将不胜感激!下面是一个非常小的可重复示例.在这种情况下,我希望标记信息在单击时打印到控制台,并在单击任何非标记区域时将NULL返回到控制台.
library(leaflet)
library(shiny)
# set basic ui
ui <- fluidPage(
leafletOutput("map")
)
server <- shinyServer(function(input, output) {
# produce the basic leaflet map with single marker
output$map <- renderLeaflet(
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addCircleMarkers(lat = 54.406486, lng = -2.925284)
)
# observe the marker click info and print to console when it is changed.
observeEvent(input$map_marker_click,
print(input$map_marker_click)
)
})
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
这似乎与这里提出的问题相同,但由于没有答案,我想我会再试一次.
您可以使用a reactiveValues存储单击的标记,并在用户单击地图背景时重置它:
server <- shinyServer(function(input, output) {
data <- reactiveValues(clickedMarker=NULL)
# produce the basic leaflet map with single marker
output$map <- renderLeaflet(
leaflet() %>%
addProviderTiles("CartoDB.Positron") %>%
addCircleMarkers(lat = 54.406486, lng = -2.925284)
)
# observe the marker click info and print to console when it is changed.
observeEvent(input$map_marker_click,{
data$clickedMarker <- input$map_marker_click
print(data$clickedMarker)}
)
observeEvent(input$map_click,{
data$clickedMarker <- NULL
print(data$clickedMarker)})
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2767 次 |
| 最近记录: |