【发布时间】:2018-07-09 03:43:14
【问题描述】:
示例数据:
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))
我已按照this SO post 中的示例进行操作(非常感谢,谢谢)。我尝试根据我在this link 中看到的内容将地图提供程序更改为 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 有关系吗?但是,我有一个功能正常的地图,没有使用this SO post 作为示例进行注册。
我已尝试在帖子开头为the link 设置地图参数,但这不起作用(值得一试)。如果我在浏览器中打开与在弹出窗口中一样,我会得到相同的结果。最后,复选框具有功能性和反应性。
我不会撒谎说我确切地知道 shinyapp 和传单地图是如何运作的,所以任何解释都会令人惊叹,即使它只是一个教育评论!
谢谢, 西姆斯
【问题讨论】:
-
您已经检查了环境变量
MAPBOX_ACCESS_TOKEN的值是预期值,对吧? -
@IvanSanchez,是的,检查过 - 我也尝试过创建一个新令牌,但没有任何运气。很抱歉没有在问题中解释这一点,但感谢您的建议!