本文介绍了如何从 R/shiny 中的传单地图中获取缩放级别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 Shiny 中的传单包创建了一个地图,其中有一个 selectInput 允许用户从站点列表中进行选择.站点列表也作为标记添加到传单中.

I create a map using leaflet package in Shiny which have a selectInput to allow user to select from a site list. The site list also adds into leaflet as markers.

当用户选择一个新站点时,我想在不更改缩放级别的情况下将地图重新​​定位到所选站点.可以调用 setView 函数来设置中心点,但必须指定缩放级别.

When user selects a new site, I want to recenter map into the selected site without change the zoom level. The setView function can be called to set center points, but has to specify the zoom level.

setView函数中是否可以获取传单地图的缩放级别?

Is it possible to get the zoom level of leaflet map which can be used in the setView function?

这是使用重置缩放级别解决我的问题的最小示例.

This is a minimum example to play with my question with reset zoom level.

library(shiny)
library(leaflet)

df <- data.frame(
    site = c('S1', 'S2'),
    lng = c(140, 120),
    lat = c(-20, -30),
    stringsAsFactors = FALSE)

# Define UI for application that draws a histogram
ui <- shinyUI(fluidPage(
    selectInput('site', 'Site', df$site),
    leafletOutput('map')

))

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

    output$map <- renderLeaflet({
        leaflet() %>%
            addTiles() %>%
            setView(lng = 133, lat = -25,  zoom = 4) %>%
            addMarkers(lng = df$lng, lat = df$lat)
    })

    observe({
        req(input$site)
        sel_site <- df[df$site == input$site,]
        isolate({
            leafletProxy('map') %>%
                setView(lng = sel_site$lng, lat = sel_site$lat, zoom = 4)
        })
    })
})

shinyApp(ui = ui, server = server)

PS:当您使用这些代码时,请在选择新站点之前调整缩放级别.

PS: when you play with these codes, please adjust zoom level before selecting a new site.

感谢任何建议.

推荐答案

您可以使用 input$mapid_zoom (见这里).

在你的observe中,你可以这样做:

In your observe, you could do:

 observe({
                sel_site <- df[df$site == input$site,]
                isolate({
                        new_zoom <- 4
                        if(!is.null(input$map_zoom)) new_zoom <- input$map_zoom
                        leafletProxy('map') %>%
                                setView(lng = sel_site$lng, lat = sel_site$lat, zoom = new_zoom)
                })
        })

这篇关于如何从 R/shiny 中的传单地图中获取缩放级别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-04 04:53
查看更多