我根据用户输入在我的传单地图中添加了标记,该输入来自页面上的selectInput。但是,当输入更改时,原始标记仍保留在地图上。更改输入后如何让标记消失?
这是我的selectizeInput的UI代码。
selectizeInput(inputId = "school",label = "Add marker", choices = data_new[order(data_new$Schools),]$Schools, selected = NULL, multiple = TRUE),
这是我的服务器代码,用于在selectizeInput输入时观察事件。
observeEvent(input$school,{
proxy <- leafletProxy('outputmap')
chosen_school <- data_new[data_new$Schools %in% input$school,]
proxy %>% setView(lng=as.numeric(chosen_school$lon), lat=as.numeric(chosen_school$lat), zoom=17) %>% addMarkers(lng=as.numeric(chosen_school$lon), lat=as.numeric(chosen_school$lat), popup= paste("School: ",chosen_school$Schools, "<br>", "Address: ",chosen_school$Address, "<br>", "Email: ",chosen_school$Email,"<br>","Bus No:", chosen_school$Bus_No),options = popupOptions(closeButton = FALSE))
})
在您的代理中,您应首先删除标记,然后再添加所选标记。您可以使用删除所有标记的clearMarkers()
函数执行此操作。
proxy %>% clearMarkers() %>% setView(lng=as.numeric(chosen_school$lon), lat=as.numeric(chosen_school$lat), zoom=17) %>% addMarkers(lng=as.numeric(chosen_school$lon), lat=as.numeric(chosen_school$lat), popup= paste("School: ",chosen_school$Schools, "<br>", "Address: ",chosen_school$Address, "<br>", "Email: ",chosen_school$Email,"<br>","Bus No:", chosen_school$Bus_No),options = popupOptions(closeButton = FALSE))
另一种方法是在标记上添加layerId
。然后,您可以使用removeMarker(~layerId)
函数删除您不想显示的标记。