示例数据:
tab1_data <- data.table( id = c(1,2,3,4),
londd = c(-1.610245, -0.242566, -0.136315, -0.730095),
latdd = c(52.98752, 54.04599, 50.79249, 51.16059),
type = c("A", "B", "C", "D"),
price = c(175000, 61000, 62500, 72500))
我已经按照这个Stack Overflow帖子中的示例进行了操作(非常感谢您)。我尝试根据此链接的内容更改地图提供商为MapBox,但输出时地图无法显示。请参见下面的图片和代码。
library(leaflet)
library(data.table)
#Set up ui
ui <- fluidPage(
titlePanel("Panel"),
sidebarPanel(h5("", width=1),
checkboxGroupInput(inputId = "TypeFlag",label = h4("Type"),
choices = setNames(object = c("A", "B", "C", "D"),
nm = c("A", "B", "C", "D")),
selected = c("A", "B", "C", "D")
),
position="left"),
#App mainPanel content and styles
mainPanel(fluidRow(leafletOutput(outputId = "map")))
)
#Set up server
server <- function(input, output){
#Build leaflet map
map <- leaflet(data = tab1_data) %>%
addProviderTiles("MapBox",
options = providerTileOptions(id = "mapbox.light", noWrap = FALSE,
accessToken = Sys.getenv('MAPBOX_ACCESS_TOKEN'))) %>%
fitBounds(~min(londd), ~min(latdd), ~max(londd), ~max(latdd))
#Filter data
datFilt <- reactive({
MatSearch <- paste0(c('xxx', input$TypeFlag), collapse = "|")
tab1_data[grepl(MatSearch,type)]
})
#Add markers based on selected flags
observe({
if(nrow(datFilt()) == 0) {
print("Nothing selected")
leafletProxy("map") %>%
clearMarkerClusters()
} else { #print(paste0("Selected: ", unique(input$InFlags&input$InFlags2)))
print("Something Selected")
leafletProxy("map", data=datFilt()) %>%
clearMarkerClusters() %>%
addCircleMarkers(lng = ~londd, lat = ~latdd,
clusterOptions = markerClusterOptions(), weight=3,
color = "#90EE90", opacity=1, fillColor = "#228B22",
fillOpacity = 0.8)
}
})
output$map <- renderLeaflet(map)
}
#Run app
shinyApp(ui = ui, server = server)
值得注意的是,如果我将
addProviderTiles()
内部的代码替换为以下内容,则它确实可以正常工作(但我更喜欢MapBox的美观性,并希望能够使用它!):"Stamen.TonerLite", options = providerTileOptions(noWrap = TRUE)
我猜这可能与在MapBox注册有关?然而,我使用此SO帖子作为示例已经拥有了一个可用的地图。
我尝试按照链接中的设置地图参数,但这并未奏效(值得一试)。如果我在浏览器中打开或在弹出窗口中打开该地图,我将得到相同的结果。最后,复选框是功能性和响应式的。
我不会撒谎说我确切地知道shinyapp和leaflet地图如何运作,因此任何解释都是惊人的,即使只是教育性评论!
谢谢, Simse
MAPBOX_ACCESS_TOKEN
的值是否如预期一样了吗? - IvanSanchez