如何从R/Shiny中的传单地图获取缩放级别? [英] How to get the zoom level from the leaflet map in R/shiny?

查看:120
本文介绍了如何从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中的传单地图获取缩放级别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆