2015-10-19 59 views
2

我正在试用Shiny中的某些地图的leaflet软件包。我希望能够有一个基础地图,数据将会改变,并随后被重新映射。但是,我试图使用leafletProxy函数,因为有一个基本映射,我只需更改所添加的数据点。所有这些工作,但地图不缩放到数据点的位置。它仍处于最远的变焦位置。R自动缩放已更新leafletProxy地图对象,闪亮

enter image description here

的代码来重现问题:

library(shiny) 
library(leaflet) 

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

ui <- fluidPage(
    leafletOutput("mymap"), 
    p(), 
    actionButton("goButton", "New Points") 
) 

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

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

    observeEvent(input$goButton, { 
    points <- cbind(rnorm(40) * 2 + 13, rnorm(40) + 48) 

    leafletProxy('mymap', session) %>% 
     clearMarkers() %>% 
     addMarkers(data = points) 
    }) 
} 

shinyApp(ui, server) 

我想在地图自动放大,一旦新的点已经添加。

回答

3

尝试在leafletProxy()

leafletProxy('mymap', session) %>% 
    clearMarkers() %>% 
    addMarkers(data = points) %>% 
    fitBounds(lng1 = max(points$long),lat1 = max(points$lat), 
      lng2 = min(points$long),lat2 = min(points$lat)) 
添加参数 “fitBounds”