问题的背景如下:
我有一个闪亮的应用程序,可以在传单地图上显示数据。可以过滤数据并以不同方式呈现。但是,当用户放大和/或移动地图,然后过滤数据时,地图将还原为初始地图视图:
output$mymap <- renderLeaflet({
leaflet() %>%
setView(lng = 0, lat = 30, zoom = 4) %>% #setting the view over ~ center of North America
addTiles(options = providerTileOptions(noWrap = TRUE))
})
我正在寻找某种返回地图位置的方法,以便在代理传单功能中更新数据时,我也可以设置视图。以下是我要实现的目标(我做了相当于的动作input$mymap_click
)。
observeEvent(input$mymap_move, {
move <- input$mymap_move
mlat <- move$lat
mlon <- move$lon
mzoom <- move$zoom
leafletProxy('mymap') %>%
setView(lng = mlng, lat = mlat, zoom = mzoom) %>%
addMarkers(data = data.join,
lat = data.join$a.lat,
lng = data.join$a.lon,
icon = icon.func[data.join$SYMBOL_CODE],
popup = data.join$ANCHOR)
})
初始化地图后,您可以通过input$mymap_center
和访问地图的当前状态input$mymap_zoom
(如果希望,可以访问input$mymap_bounds
)
您只需要注意两件事:
isolate
进行查找,否则每次您更改视图时,地图都会重新渲染,这可能不是您想要的(这会使您的应用程序非常慢,并且用户无法使用)因此,将它们放在一起,我认为这段代码应该可以实现您想要的:
output$mymap <- renderLeaflet({
isolate({
if ("mymap_center" %in% names(input)) {
mapparams <- list(center = input$mymap_center,
zoom = input$mymap_zoom)
} else {
mapparams <- list(center = list(lng=0, lat=30),
zoom = 4) #setting the view over ~ center of North America
}
})
leaflet() %>%
setView(lng = mapparams$center$lng, lat = mapparams$center$lat, zoom = mapparams$zoom) %>%
addTiles(options = providerTileOptions(noWrap = TRUE))
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句