我试图添加不同的图标到我试图显示的标记。我有不同的类别,如
category <- data() %>%
dplyr::select(category) %>%
distinct()
它看起来像这样
$ category: chr "Traffic" "Livelihood" "Waste" ....
我有一个变量的徽标选择不同的图标的类别
logos <- awesomeIconList(
"Pothole" = makeAwesomeIcon(
icon = "road",
markerColor = "black"
),
"Garbage Collection" = makeAwesomeIcon(
icon = "trash",
markerColor = "green"
),
"Air Quality" = makeAwesomeIcon(
icon = "cloud",
markerColor = "blue"
)
)
我在observe函数中编写了逻辑,我把它从主逻辑中分离出来,我不知道为什么它对我不起作用,当我不使用observe函数,也不使用leaflet代理时,它是起作用的,当我在renderLeaflet函数中使用它时,它是起作用的。
我不知道我能在这里做什么,从错误中我不太理解逻辑
observe({
filtered_data <- bqdata() %>%
dplyr::filter(
if ("All" %in% input$category) {
category != ""
} else {
category %in% input$category
}
)
proxy <- leafletProxy("layer_data")
if (input$cluster) {
proxy %>% addAwesomeMarkers(
lat = filtered_data$lat,
icon = ~logos[category],
lng = filtered_data$long,
popup = paste0(
"<b>Title: </b>", filtered_data$title, "<br>",
"<b>Type: </b>", filtered_data$type, "<br>",
"<b>Category: </b>", filtered_data$category, "<br>",
"<b>Status: </b>", filtered_data$status, "<br>",
"<b>Description: </b>", filtered_data$description, "<br>",
"<b>Address: </b>", filtered_data$address, "<br>",
"<b>City Name: </b>", filtered_data$city, "<br>",
"<b>State Name: </b>", filtered_data$state, "<br>"
),
clusterOptions = markerClusterOptions()
)
} else {
proxy %>% clearMarkerClusters()
}
})
1条答案
按热度按时间hpxqektj1#
您引用了2个变量,但没有为
addAwesomeMarkers
函数定义数据以引用其中的变量(~
表示法)。像addMarkers这样的散页函数有一个data.frame,它是用“data”参数定义的,或者是从前面的函数传递过来的。如果你用data.frame定义“data”,“filtered_data”,然后引用data.frame中的变量,使用“~”表示它们来自data. frame。我在上面的评论中提到的问题是由于你引用
logos
的方式,使用你的符号应该是:或者,如果您像我上面提到的那样定义数据参数: