我有一个leaflet
地图,我希望可以选择从A的值映射到B的值。我可以找到的每个例子都说使用shiny
和leaflet
,所有这些例子都包括以下内容:
ui <- fluidPage(
selectInput(inputId = "Data",
label = "Data",
choices = c("A","B"),
leafletProxy(outputId = "map") #or leafletOutput
))
但我不断收到错误
leafletProxy(或leafletOutput)不存在
。我该如何解决这个问题?我的宣传单创建时间:
mypal <- colorNumeric(palette = "viridis", domain = d$A)
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
setView(lat = 39.8283, lng = -98.5795, zoom = 4) %>%
addPolygons(data =
USA, stroke = TRUE, color='black', opacity=1, weight=.5, smoothFactor = 0.2, fillOpacity = 1,
fillColor = ~mypal(d$A),
popup = paste('<b>',d$state, "</b><br>A:", d$A) %>%
addLegend(position = "bottomleft", pal = mypal, values = d$A,
title = "A",
opacity = 1)
从你的例子看来,你的shiny
没有server
功能,所以它不会起作用。
请找到附带的模拟闪亮,你可以开始构建:
图书馆(有光泽)图书馆(传单)
ui <- fluidPage(
selectInput(inputId = "Data",
label = "Data",
choices = c("A","B")),
leafletOutput("map")
)
server <- server <- function(input, output, session) {
output$map=renderLeaflet({
if((input$Data) == "A"){
point = c(42.6525, -73.757222)
}
if((input$Data) == "B"){
point = c(39.283333, -76.616667)
}
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addMarkers(lat=point[1], lng=point[2])
})
选择“A”时会显示“Albany”,选择“B”时会显示Baltimore
基本上:
ui
是一种“界面”,它将被展示:
selectInput
:你可以在这里选择A或B.leafletOutput
:将显示传单地图当您使用server
时,selecInput
将执行创建地图和计算操作的“艰苦工作”:
output$map
意味着我们想要绘制leafletOuput
(这就是为什么它是调用地图,就像在leafletOutput("map")
然后,根据所选的输入(A或B)
if((input$Data) == "A"){
point = c(42.6525, -73.757222)
}
if((input$Data) == "B"){
point = c(39.283333, -76.616667)
}
我们指定奥尔巴尼或巴尔的摩的坐标。最后,我们构建地图:
leaflet() %>%
addProviderTiles("OpenStreetMap.Mapnik") %>%
addMarkers(lat=point[1], lng=point[2])
请注意,这是一个模拟闪亮,它远非完美,它只是说明性的。
最好!