我创建了一个闪亮的应用程序,它在数据框中显示点的传单地图。
我想允许用户单击地图上的任意位置以获取附近点的一些信息,并在该点上留下标记。
他们可能想单击其他位置。当他们在其他位置单击时,我希望保留一个新标记,并删除旧标记。
我已经编写了一个可以正常工作的Shiny应用程序,但无法使其正常工作。
我尝试使用clearMarkers,但这会删除所有标记,包括我创建的标记和基础数据帧中的标记。
我尝试指定点击点的ID,以便clearMarkers可能只是删除该点,但我不知道谁能找到点击点的ID。
如何使它正常工作?
这是我的玩具代码:
library(shiny)
library(sp)
library(shinydashboard)
library(leaflet)
#### Make a spatial data frame
lats<-c(37.38,39)
lons<-c(-94,-95,-96)
df<-data.frame(cbind(lons,lats))
coordinates(df)<-~lons+lats
#### Define UI for application that draws a histogram
ui <- dashboardPage(
dashboardHeader(
),
# Sidebar layout with input and output definitions
dashboardSidebar(
),
# Main panel for displaying outputs
dashboardBody(
h2("My Map", align="center"),
h5("Click anywhere to draw a circle", align="center"),
leafletOutput("mymap", width="100%", height="500px")
),
)
#### Define server logic required to draw a histogram
server <- function(input, output) {
output$mymap <- renderLeaflet({
m = leaflet(df,width="100%",height="100%") %>%
addTiles() %>%
addCircleMarkers()
})
observeEvent(input$mymap_click, {
click <- input$mymap_click
text<-paste("Latitude ", round(click$lat,2), "Longtitude ", round(click$lng,2))
proxy <- leafletProxy("mymap")
## This displays the pin drop circle
proxy %>%
#clearPopups() %>%
#clearMarkers(layerId=input$mymap_click$id) %>%
#addPopups(click$lng, click$lat) %>%
addCircles(click$lng, click$lat, radius=100, color="red")
})
}
# Run the application
shinyApp(ui = ui, server = server)
答案 0 :(得分:2)
为此,您可以将group
的{{1}}参数和addCircles
一起使用-
clearGroup