【问题标题】:Make circles radius react to zoom level使圆半径对缩放级别做出反应
【发布时间】:2016-08-17 21:23:00
【问题描述】:

我想做的很简单:我想在用户放大或缩小时保持圆圈的大小不变。

library(shiny)
library(leaflet)

r_colors <- rgb(t(col2rgb(colors()) / 255))
names(r_colors) <- colors()

ui <- fluidPage(
  leafletOutput("mymap"),
  p(),
  actionButton("recalc", "New points")
)

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

  output$mymap <- renderLeaflet({
    leaflet() %>%
      addProviderTiles("Stamen.TonerLite",
                       options = providerTileOptions(noWrap = TRUE)) 
  })

  observe({
    new_zoom <- input$mymap_zoom
    leafletProxy('mymap') %>%
      clearShapes() %>%
      addCircles(data = data.frame(lon = 0, lat = 0), 
                 radius = 100000 / new_zoom)
  })
}

shinyApp(ui, server)

我尝试了这段代码,但我真的无法解释结果。发生的情况是,每次我放大或缩小时,Leaflet 都会添加一个圆圈。

为什么? ClearShapes() 不应该处理这个吗?还有什么简单的方法可以得到我想要的吗?

【问题讨论】:

    标签: r shiny leaflet


    【解决方案1】:

    在这种情况下,我认为你最好使用圆形标记:

    圆形标记与常规圆形非常相似(请参阅线条和形状),不同之处在于它们的屏幕像素半径保持不变,无论缩放级别如何。

    https://rstudio.github.io/leaflet/markers.html

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 1970-01-01
      • 2020-11-20
      • 1970-01-01
      • 2016-05-19
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多