Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.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
R传单:当多边形不可单击时,是否可以显示多边形标签?_R_Shiny_Leaflet - Fatal编程技术网

R传单:当多边形不可单击时,是否可以显示多边形标签?

R传单:当多边形不可单击时,是否可以显示多边形标签?,r,shiny,leaflet,R,Shiny,Leaflet,在多边形上移动鼠标时,我需要显示多边形的标签(带有区域名称)。但是,多边形无法单击,因为我已将此属性用于代码的另一部分。这可能吗 如果不可能,另一种解决方案是在多边形上写一个名称。我也不知道怎么做/ 以下是到目前为止我的代码的外观 library(shiny) library(leaflet) ui <- bootstrapPage( tags$style(type = "text/css", "html, body {width:100%;height:100%}"), leaflet

在多边形上移动鼠标时,我需要显示多边形的标签(带有区域名称)。但是,多边形无法单击,因为我已将此属性用于代码的另一部分。这可能吗

如果不可能,另一种解决方案是在多边形上写一个名称。我也不知道怎么做/

以下是到目前为止我的代码的外观

library(shiny)
library(leaflet)

ui <- bootstrapPage(
tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
leafletOutput("map", width = "100%", height = "100%")
)

# Load shapefiles
shp_Tajo <- readOGR(dsn = "./Data/ES", layer = "Aqueduct_river_basins_TEJO", verbose = FALSE)

server <- function(input, output, session){ 
output$map <- renderLeaflet({
      # Arguments controlling the looks of the basin polygon
      dopacity = 0.3
      dsmoothFactor = 1
      dfillOpacity = 0.5
      vcolors = c("red")
      leaflet() %>% addTiles() %>% addPolygons(data = shp_Tajo, stroke = F,
opacity = dopacity, smoothFactor = dsmoothFactor, color = vcolors[1], fillColor = vcolors[1], 
fillOpacity = dfillOpacity, highlightOptions = highlightOptions(color = "white", weight = 2, 
bringToFront = FALSE), options = pathOptions(clickable = FALSE), label = "Tajo",
labelOptions = labelOptions(noHide = T, clickable = T, textOnly = TRUE, opacity=0.5,textsize='15px'))
  })
}
库(闪亮)
图书馆(单张)

ui通过注释您的
pathOptions
设置,它可以按照您的预期工作:您可以单击除多边形以外的任何位置,多边形的标签将显示在鼠标上方:

工作示例:

库(“闪亮”)
图书馆(“rgdal”)
图书馆(“单张”)
图书馆(“ggmap”)

用户界面请提供可复制的example@HubertL我现在已经包括了一个可复制的例子。谢谢你的评论。这好多了,但是你还没有提供一个关于点击事件在你的应用程序中是如何使用的提示code@HubertL,基本上,我希望用户能够通过单击地图添加标记,即使用户单击多边形内的某个点。至于现在,我只能通过设置options=pathOptions(clickable=FALSE)来实现这一点,但是当我将鼠标移到多边形上时,多边形标签“Tajo”不会显示出来。有没有办法将这两种属性结合起来。再次感谢您的评论。
library("shiny")
library("rgdal")
library("leaflet")
library("ggmap")

ui <- bootstrapPage(
  tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
  leafletOutput("map", width = "100%", height = "100%")
)

# Load shapefiles
shp_Tajo <- readOGR(dsn = "./Data/ES", layer = "Aqueduct_river_basins_TEJO", verbose = FALSE)

server <- function(input, output, session){ 
  output$map <- renderLeaflet({
    # Arguments controlling the looks of the basin polygon
    dopacity = 0.3
    dsmoothFactor = 1
    dfillOpacity = 0.5
    vcolors = c("red")
    leaflet() %>% 
      addTiles() %>% 
      addPolygons(
        data = shp_Tajo
        , stroke = FALSE
        , opacity = dopacity
        , smoothFactor = dsmoothFactor
        , color = vcolors[1]
        , fillColor = vcolors[1]
        , fillOpacity = dfillOpacity
        , highlightOptions = highlightOptions(color = "white", weight = 2, bringToFront = FALSE)
        # , options = pathOptions(clickable = FALSE)
        , label = "Tajo"
        , labelOptions = labelOptions(noHide = TRUE, textOnly = TRUE, opacity = 0.5 , textsize='15px'))
  })

  observeEvent(input$map_click, {
    click <- input$map_click
    clat <- click$lat
    clng <- click$lng

    leafletProxy('map') %>% 
      addCircles(
        lng = clng
        , lat = clat
        , group = 'circles'
        , weight = 1
        , radius = 5000
        , color = 'black'
        , fillColor = 'orange'
        , fillOpacity = 0.5
        , opacity = 1
        )
  })
}

shinyApp(ui, server)