Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mapview::addFeatures中更改圆标记属性(例如不透明度和填充不透明度)_R_Shiny_Leaflet_Android Mapview_R Leaflet - Fatal编程技术网

如何在mapview::addFeatures中更改圆标记属性(例如不透明度和填充不透明度)

如何在mapview::addFeatures中更改圆标记属性(例如不透明度和填充不透明度),r,shiny,leaflet,android-mapview,r-leaflet,R,Shiny,Leaflet,Android Mapview,R Leaflet,我已经能够在R-Shining应用程序中生成一张地图,通过组合mapview、mapedit和传单软件包,可以选择多种标记。 功能上一切都很好,除了我希望修改标记属性,更具体地说是增加fillOpacity mapview AddFeatures的文档建议它应该接受addCircleMarkers传单使用的相同参数。我也尝试过使用addCircleMarkers函数代替addFeatures,但没有成功 看 。。。传递给相应传单的其他参数::add* 功能。请参见添加圆形标记、添加多段线和添加多

我已经能够在R-Shining应用程序中生成一张地图,通过组合mapview、mapedit和传单软件包,可以选择多种标记。 功能上一切都很好,除了我希望修改标记属性,更具体地说是增加fillOpacity

mapview AddFeatures的文档建议它应该接受addCircleMarkers传单使用的相同参数。我也尝试过使用addCircleMarkers函数代替addFeatures,但没有成功

。。。传递给相应传单的其他参数::add* 功能。请参见添加圆形标记、添加多段线和添加多边形

但它似乎忽视了这些论点;权重、不透明度和填充不透明度。我已经在独立代码中标记了参数是否有效

我做错了什么,还是你认为这是一个错误

# devtools::install_github("r-spatial/sf")
# devtools::install_github("r-spatial/mapview@develop")
# devtools::install_github("bhaskarvk/leaflet.extras")
# devtools::install_github("r-spatial/mapedit")
library(tidyverse)
library(sf)
library(leaflet)
library(mapedit)
library(mapview)
library(shiny)
library(shinyjs)

locnCoord <-
  data.frame(location = c('Sit1','Site2','Site3'),
             lat=c(-18.1, -18.3, -18.4),
             lon=c(145.8, 145.9, 145.9)) %>%
  mutate(depth = runif(3))

locnSF <- st_as_sf(locnCoord, coords = c('lon','lat'), crs="+proj=longlat +datum=WGS84 +no_defs")

#### User input

ui <- fluidPage(
  shinyjs::useShinyjs(),
  shinyjs::extendShinyjs(text = "shinyjs.refresh = function() { location.reload(); }"),
  fluidRow(
    # edit module ui
    column(6,
           selectModUI("selectmap"),
           actionButton("refresh", "Refresh Map")
           ),
    column(6,
           h3("Point of Depth"),
           plotOutput("selectstat")
           )
    )
  )

#### Server

server <- function(input, output, session) {

  observeEvent(input$refresh, {
    shinyjs::js$refresh()
  })

  g_sel <- callModule(
    selectMod,
    "selectmap",
    leaflet() %>%
      addTiles() %>%
      addFeatures(
      # addCircleMarkers(
        data = locnSF,
        layerId = ~location,
        stroke = TRUE, # This is effective
        color = 'red', # This is effective
        weight = 150, # This is ignored    ####
        opacity = 0, # This is ignored     ####
        fill = TRUE, # This is effective
        fillColor = 'blue', # This is effective
        fillOpacity=1, # This is ignored   ####
        radius=20) # This is effective
  )

  rv <- reactiveValues(selected=NULL)

  observe({
    gs <- g_sel()

    if(length(gs$id) > 0) {
      rv$selected <- locnSF %>% filter(location %in% gs$id)
    } else {
      rv$selected <- NULL
    }
  })

  output$selectstat <- renderPlot({
    ggplot()
    if(!is.null(rv$selected) && nrow(rv$selected) > 0) {
      ggplot(data=rv$selected, aes(location, depth))+
        geom_point(color='red', size=5)
    } else {
      ggplot()
    }
  })
}
shinyApp(ui, server)
#devtools::install_github(“r-spatial/sf”)
#devtools::安装\u github(“r-spatial/mapview@develop")
#开发工具:安装github(“bhaskarvk/传单.附加文件”)
#devtools::install_github(“r-spatial/mapedit”)
图书馆(tidyverse)
图书馆(sf)
图书馆(单张)
库(地图编辑)
图书馆(地图视图)
图书馆(闪亮)
图书馆(shinyjs)
LOCNCORD%
变异(深度=runif(3))

locnSF它们不可忽略。如果您尝试作为一个独立的mapview调用,您将看到它们是有效的。在你的应用程序中,它们被mapedit模块
selectMod
屏蔽,该模块允许你分别设置
opacity
fillOpacity
weight
,分别用于通过参数
styleTrue
styleFalse
选择和不选择特征的情况。当你设置这些,你会得到想要的行为。因此,更改调用
selectMod
模块的部分,如下所示:

g_sel <- callModule(
    selectMod,
    "selectmap",
    leaflet() %>%
      addTiles() %>%
      addFeatures(
        # addCircleMarkers(
        data = locnSF,
        layerId = ~location,
        stroke = TRUE, # This is effective
        color = 'red', # This is effective
        # weight = 150, # This is ignored    ####
        # opacity = 0, # This is ignored     ####
        fill = TRUE, # This is effective
        fillColor = 'blue', # This is effective
        # fillOpacity=1, # This is ignored   ####
        radius=20), # This is effective
    styleFalse = list(fillOpacity = 0.5, weight = 0, opacity = 0), 
    styleTrue = list(fillOpacity = 1, weight = 5, opacity = 1)
  )
g_sel%
addTiles()%>%
附加功能(
#addCircleMarkers(
数据=locnSF,
layerId=~位置,
笔划=正确,#这是有效的
颜色=‘红色’,#这是有效的
#重量=150,#忽略此项####
#不透明度=0,#这将被忽略####
fill=TRUE,#这是有效的
fillColor=‘蓝色’,#这是有效的
#fillOpacity=1,#忽略此选项####
半径=20),#这是有效的
styleFalse=list(fillOpacity=0.5,weight=0,opacity=0),
styleTrue=list(fillOpacity=1,weight=5,opacity=1)
)

谢谢你,蒂姆。现在工作得很好。