【发布时间】:2018-12-23 12:09:53
【问题描述】:
基于下面的 cmets,我在空间数据框中明确划分了纬度/经度。
添加
addCircleMarkers( ~ longitude, ~ latitude)
添加
observeEvent(input$map_marker_click, {
p <- input$map_marker_click
print(p)
})
但是,当我单击标记时,控制台中没有显示任何内容,所以我仍然感到困惑。
修改后的代码
# Click on circle and get info
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap"),
fluidRow(verbatimTextOutput("click_text"))
)
server <- function(input, output, session) {
# Create tree geometries
tree_1g <- st_point(c(-79.2918671415814, 43.6760766531298))
tree_2g <- st_point(c(-79.4883669334101, 43.6653747165064))
tree_3g <- st_point(c(-79.2964680812039, 43.7134458013647))
# Create sfc object with multiple sfg objects
points_sfc <- st_sfc(tree_1g, tree_2g, tree_3g, crs = 4326)
# Create tree attributes
data <- data.frame (
layerId = c("001", "002", "003"),
address = c(10, 20, 30),
street = c("first", "second", "third"),
tname = c("oak", "elm", "birch"),
latitude = c(43.6760766531298, 43.6653747165064, 43.7134458013647),
longitude = c(-79.2918671415814, -79.4883669334101, -79.2964680812039)
)
tree_data <- st_sf(data, geometry = points_sfc)
output$mymap <- renderLeaflet({
leaflet(data = tree_data) %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
# Centre the map in the middle of Toronto
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircleMarkers( ~ longitude, ~ latitude)
})
observeEvent(input$map_marker_click, {
p <- input$map_marker_click
print(p)
})
}
shinyApp(ui, server)
当用户点击每个标记时,我希望在地图下方显示一些相关信息。基于这个早先post我试过这个。但是,当我单击标记时没有任何反应。这可能与我不了解如何将标记与 layerIds 相关联?
# Click on circle and get info
library(shiny)
library(leaflet)
ui <- fluidPage(
leafletOutput("mymap"),
fluidRow(verbatimTextOutput("click_text"))
)
server <- function(input, output, session) {
# Create tree geometries
tree_1g <- st_point(c(-79.2918671415814, 43.6760766531298))
tree_2g <- st_point(c(-79.4883669334101, 43.6653747165064))
tree_3g <- st_point(c(-79.2964680812039, 43.7134458013647))
# Create sfc object with multiple sfg objects
points_sfc <- st_sfc(tree_1g, tree_2g, tree_3g, crs = 4326)
# Create tree attributes
data <- data.frame (
layerId = c("001", "002", "003"),
address = c(10, 20, 30),
street = c("first", "second", "third"),
tname = c("oak", "elm", "birch")
)
tree_data <- st_sf(data, geometry = points_sfc)
output$mymap <- renderLeaflet({
leaflet(data = tree_data) %>%
addProviderTiles(providers$Stamen.Watercolor) %>%
# Centre the map in the middle of Toronto
setView(lng = -79.384293,
lat = 43.685,
zoom = 11) %>%
addCircleMarkers()
})
observe({
click <- input$map_marker_click
if(is.null(click))
return()
address <- paste("Address: ", click$street)
output$click_text <- renderText({
address
})
})
}
shinyApp(ui, server)
【问题讨论】:
-
addCircleMarkers有参数popup和popupOptions用于在用户单击时弹出标签。您可能会发现使用它们比摆弄observe要容易得多 -
我要求在侧边栏中使用信息,而不是在弹出窗口中使用。我查看了 SymbolixAU 提到的链接并修改了我的问题,但仍然无法从点击事件中获取信息。
-
当你点击圆圈标记时,有没有办法从弹出窗口中获取信息?