首页 > 解决方案 > 有没有办法修改 R 传单中现有标记/形状的不透明度(有光泽)

问题描述

这可能是一个愚蠢的问题。我有一个嵌入在闪亮应用程序中的地图,我正在寻找一种方法来以编程方式调整标记/形状或这些标记/形状或这些组的不透明度,在它们被添加到具有addMarkers(...) 或类似add*功能的传单地图之后。潜在地,相同的原则也适用于其他标记参数,但不透明度是我的第一个目标。

Javascript传单似乎允许它,根据这个线程判断:当时多个标记的setOpacity

答案中的 JSFiddle 代码似乎完全允许这样做,通过访问给定组下的每一层并通过layer.setOpacity().

下面是这样一个闪亮的应用程序的最小设置:

ui.R:

library(shiny)
library(shinydashboard)
library(leaflet)

dashboardPage(
  dashboardHeader(),
  dashboardSidebar(),
  dashboardBody(
    leafletOutput("maptest"),
    sliderInput(inputId = "opacity.slider", label = "opacity", min = 0, max = 1, value = 1)
  )
)

服务器.R:

server <- function(input, output) { 
  output$maptest <- renderLeaflet({
    leaflet() %>% addMarkers(lat = c(0), lng = c(0), layerId = "layer1", group = "testgroup")
  })

  observeEvent(input$opacity.slider, {
    print(input$opacity.slider)
    leafletProxy("maptest") %>% setGroupOpacity(group = "testgroup", opacity = input$opacity.slider)
  })
}

观察者中监视滑块事件的setGroupOpacity功能尚未在任何地方实现:我正在寻找一种方法来实现这样的功能。

无论如何在R中实现这一点?可能会在那里扔一些javascript......

谢谢!

标签: javascriptrshinyleaflet

解决方案


谢谢,科马斯。

leaflet我不能直接帮助你解决你的问题:唉,我对 不够熟悉。然而,一点谷歌搜索给了我这个leaflet.opacity 。让我感到震惊的是,结合shinyjs- 特别是extendShinyjs - 应该给你你想要的。


推荐阅读