Как получить маркер, добавленный на карту листовки, который будет очищен после выбора другого маркера? - PullRequest
1 голос
/ 15 апреля 2019

Я добавил маркеры в мою карту листовок на основе пользовательского ввода, который поступает из selectInput на странице. Однако при изменении входных данных исходный маркер все еще остается на самой карте. Как заставить маркер исчезнуть после изменения ввода?

Это код пользовательского интерфейса для моего selectizeInput.

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)) 

})

1 Ответ

0 голосов
/ 15 апреля 2019

В вашем прокси вы должны сначала удалить маркер, прежде чем добавлять выбранные.Вы можете сделать это с помощью функции 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), чтобы удалить маркеры, которые вы не хотите показывать.

...