使用R Shiny中的Mapdeck库,有没有办法捕获地图的视图状态以供服务器端使用?

问题描述 投票:0回答:1

我正在

mapdeck
项目中使用
R Shiny
。当用户平移/倾斜/旋转/缩放地图时,我想知道当前视图状态是什么,以便我可以使用
lat
lon
pitch
bearing
 的新值zoom
在服务器端。

我知道我可以在主

show_view_state = TRUE
调用中使用
mapdeck
,那么有没有办法捕获这些值?我希望将当前视图状态(当我使用
show_view_state = TRUE
时显示在地图上)捕获到服务器端代码上的变量中,我可以使用和操作该变量。

r shiny mapdeck
1个回答
0
投票

您可以使用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)
  }
  )
© www.soinside.com 2019 - 2024. All rights reserved.