我正在
mapdeck
项目中使用 R Shiny
。当用户平移/倾斜/旋转/缩放地图时,我想知道当前视图状态是什么,以便我可以使用 lat
、lon
、pitch
、bearing
、 的新值zoom
在服务器端。
我知道我可以在主
show_view_state = TRUE
调用中使用 mapdeck
,那么有没有办法捕获这些值?我希望将当前视图状态(当我使用 show_view_state = TRUE
时显示在地图上)捕获到服务器端代码上的变量中,我可以使用和操作该变量。
您可以使用input$map_view_change(其中“map”是地图的outputId)捕获当前视图状态,并访问其中的所有必需视图参数,包括经度、纬度、缩放、方位角和俯仰角。例如 input$map_view_change$zoom 返回当前缩放值。
这是一个简单闪亮应用程序中的编码示例。让我知道这是否有帮助!
library(shiny)
library(mapdeck)
library(tidyverse)
# set_token(ADD MAPDECK TOKEN HERE)
shinyApp(
ui = fluidPage(
title = "Mapdeck View State Example",
fluidRow(
column(
10,
mapdeckOutput("map", height = '800', width = '101%'),
),
column(
2,
htmlOutput("map_view")
)
)
),
server = function(input, output, session) {
output$map <- renderMapdeck({
mapdeck(style = mapdeck_style("streets"),
location = c(-95.1500, 34.1728),
zoom = 3)
})
observeEvent(input$map_view_change, {
output$map_view <- renderText(
str_glue(
"<h3><p><b>Current Map View</b></p><p>Location: {local_x}, {local_y}
</p>
<p> Zoom: {zm}</p>
<p> Bearing: {bearing}</p>
<p> Pitch: {pitch}</p></h3>",
local_x = round(input$map_view_change$longitude, 4),
local_y = round(input$map_view_change$latitude, 4),
zm = round(input$map_view_change$zoom, 2),
bearing = round(input$map_view_change$bearing, 2),
pitch = round(input$map_view_change$pitch, 2)
)
)
}, ignoreInit = F)
}
)