R闪亮地图视图:仅重绘图层,而不是整个地图(即代理)
我试图模仿或弄清楚类似于Proxy的功能是如何在闪亮的应用程序(flexdashboard)中的mapview包中工作的。我的想法是,我有一个参数化的数据库查询,根据用户输入获取sf数据集(~4200个多边形),然后在mapview中绘图。但是,似乎每次这样做时,整个地图都会重新绘制 下面是一个使用默认franconia数据集和闪亮输入控制线条不透明度的可复制示例。我还包括我的代码(注释掉),以显示如何按预期使用它的示例(即基于数据库获取动态重画多边形层) 在shiny中是否有一种方法可以绘制一次所有背景贴图样式的“基础”贴图,然后在检索新多边形数据时仅重新绘制它们 谢谢R闪亮地图视图:仅重绘图层,而不是整个地图(即代理),r,shiny,flexdashboard,r-mapview,R,Shiny,Flexdashboard,R Mapview,我试图模仿或弄清楚类似于Proxy的功能是如何在闪亮的应用程序(flexdashboard)中的mapview包中工作的。我的想法是,我有一个参数化的数据库查询,根据用户输入获取sf数据集(~4200个多边形),然后在mapview中绘图。但是,似乎每次这样做时,整个地图都会重新绘制 下面是一个使用默认franconia数据集和闪亮输入控制线条不透明度的可复制示例。我还包括我的代码(注释掉),以显示如何按预期使用它的示例(即基于数据库获取动态重画多边形层) 在shiny中是否有一种方法可以绘制一
---
title: "MRE"
output:
flexdashboard::flex_dashboard:
orientation: columns
vertical_layout: fill
runtime: shiny
---
```{r setup, include=FALSE}
library(flexdashboard)
library(mapview)
library(shiny)
library(leaflet)
#library(RSQLite)
#library(sf)
```
Sidebar {.sidebar}
-----------------------------------------------------------------------
```{r}
# This is shiny input that will trigger entire map redraw
sliderInput("gridlines", "Grid Line Opacity", 0, 1, 0, step = 0.1, ticks = FALSE)
```
```{r}
### THIS IS MY ACTUAL CODE...For reference
# sp_grid <- reactive({
# db <- "../data/modeldata.db"
# con <- dbConnect(SQLite(), db )
#
# # set the sql based on user input
# sql <- 'SELECT id, Time,Cell_I, Cell_J, Cell_K, Cell_Botdepth_M, Zmax, Salinity, WKT_GEOMETRY
# FROM vwGridTK
# WHERE Time = :time
# AND Cell_K = :layer'
#
# df.grid <- dbGetQuery(con, sql, params = list(time = 0,
# layer = 1))
# dbDisconnect(con)
#
# st_as_sf(df.grid, wkt = "WKT_GEOMETRY") %>% st_set_crs(4326)
#
# })
```
Column {data-width=500}
-----------------------------------------------------------------------
### Reproducible Example
NOTE the shiny input to control opacity
```{r}
renderLeaflet({
m <- mapview(franconia, zcol = "district", alpha = input$gridlines)
m@map
})
```
Column {data-width=500}
-----------------------------------------------------------------------
### My Example
```{r}
# renderLeaflet({
# m <- mapview(sp_grid(), zcol = "Salinity",
# legend = TRUE, alpha = input$gridlines)
#
# m@map
#
# })
```
---
标题:“MRE”
输出:
flexdashboard::flex_仪表板:
方向:列
垂直布局:填充
运行时间:闪亮
---
```{r设置,include=FALSE}
库(flexdashboard)
图书馆(地图视图)
图书馆(闪亮)
图书馆(单张)
#图书馆(RSQLite)
#图书馆(sf)
```
边栏{.Sidebar}
-----------------------------------------------------------------------
```{r}
#这是一个闪亮的输入,将触发整个地图重画
sliderInput(“网格线”,“网格线不透明度”,0,1,0,步长=0.1,刻度=FALSE)
```
```{r}
###这是我的实际代码…供参考
#sp_网格