在Shiny app的传单地图中更改缩放控件的默认位置

Ban*_*you 5 javascript r leaflet shiny

我正在使用Shiny app创建传单地图,但想要将缩放控制的默认位置从topleft更改为topright.

R leaflet包设置topleft源代码中的默认位置.

以下问题:在leaflet.js中自定义放大/缩小按钮,我们可以map.zoomControl.setPosition('topright');用来改变缩放控制的位置.

var map = L.map('map', {
  zoomControl: true
});
map.zoomControl.setPosition('topright');
Run Code Online (Sandbox Code Playgroud)

我可以创建一个R函数来设置新的位置zoomControl吗?例如,

zoomControlPosition <- function(map, position = 'topleft') {
    # New codes add here
}
Run Code Online (Sandbox Code Playgroud)

我猜它涉及一些js,但我没有经验js.谢谢你的任何建议.

Pol*_*eer 7

尝试这个:

leaflet(options = leafletOptions(zoomControl = FALSE)) %>%
    htmlwidgets::onRender("function(el, x) {
        L.control.zoom({ position: 'topright' }).addTo(this)
    }") %>%
Run Code Online (Sandbox Code Playgroud)


Ban*_*you 5

我弄清楚如何改变位置zoomControl.您可以从我的传单包中找到此功能:https://github.com/byzheng/leaflet/commit/fdf9fb159adbc0e36cc2bd7d7b33c72c17c468f6

在此输入图像描述

这是使用它的最小示例:

library(shiny)
library(leaflet)


ui <- fluidPage(
  leafletOutput("mymap")
)

server <- function(input, output, session) {
  output$mymap <- renderLeaflet({
    leaflet() %>%
      addTiles() %>%

      zoomControlPosition('topright')
  })
}

shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)

  • 你已经删除了你的分叉,Bangyou。您能告诉我们您是如何创建 ZoomControlPosition 函数的吗? (2认同)