Leaflet R Shiny:选择并缩放
2017-03-17
3838
我正在开发一款带有 shiny 和 leaflet 的工具: 我希望当客户点击变量时(参见 UI 代码,例如 NE),地图会转到另一个视图,例如纯 leaflet 中的视图:
L.easyButton( '<strong>NE</strong>', function(){
//zoomTo.setView([55, -2], 4);
map.setView([46.95, 6.85], 12);
}).addTo(map);
这是我的 R_code(提前感谢您的回答和支持;)
#UI:
library(leaflet)
Choices for drop-downs
vars <- c(
"NE" = "NE",
"VD" = "VD",
"VS" = "VS",
"JU" = "JU",
"BE" = "BE",
"GE" = "GE")
navbarPage("Près de chez toi ciao.ch", id="nav",
tabPanel("Interactive map",
div(class="outer",
tags$head(
# Include our custom CSS
includeCSS("styles.css"),
includeScript("gomap.js")
),
leafletOutput("map", width="100%", height="100%"),
# Shiny versions prior to 0.11 should use class="modal" instead.
absolutePanel(id = "controls", class = "panel panel-default", fixed = TRUE,
draggable = TRUE, top = 60, left = "auto", right = 20, bottom = "auto",
width = 330, height = "auto",
h2("Rechercher "),
selectInput("canton", "Canton", data$canton,selected = "" )
),
tags$div(id="cite",
"sddssd"
)
)
),
tabPanel("Adresses",
dataTableOutput('mytable')
)
)
#SERVER:
data <- read_csv("~/Desktop/superzip r/Sans titre 2.csv")
function(input, output, session) {
## Interactive Map ###########################################
# Create the map
output$map <- renderLeaflet({
leaflet() %>%
addTiles(
urlTemplate = "//{s}.tiles.mapbox.com/v3/jcheng.map- 5ebohr46/{z}/{x}/{y}.png",
attribution = 'Maps by <a href="http://www.mapbox.com/">Mapbox</a>'
) %>%
setView(lng = 6.6328200, lat = 46.5160000, zoom = 12)%>%
addMarkers(data,lng=data$Longitude,lat=data$Latitude,label = data$nom)
})
###observation
observe({
canton<-input$canton
})
output$mytable = renderDataTable({
data
},options = list(
autoWidth = TRUE,
columnDefs = list(list(width = '200px', targets = "_all"))))}
#data
1 Genève GE 022 329 11 69 www.fegpa.ch 6.164722 46.19853
2 Chavannes-près-Renens VD 021 633 44 32 croix-bleue.ch 6.575761 46.53280
3 Lausanne VD 021 623 84 84 www.fva.ch 6.611342 46.52284
4 Neuchâtel NE 032 889 62 10 http://www.cenea.ch/ 6.909872 46.98825
5 Delémont JU 032 421 80 80 http://www.addiction-jura.ch 6.411595 46.94195
6 Lausanne VD 021 321 29 11 www.addictionsuisse.ch 6.626040 46.51873
1个回答
要更新 leafletMap,您应该使用
leafletProxy
,您可以在
此处
阅读有关该内容的信息。
这个想法是,您需要有一个在您更改选择时更新的
reactive
值,该
reactive
值由
leafletProxy
观察,其值用于执行更新。
它应该看起来像这样:
output$map <- renderLeaflet({
leaflet(data) %>%
addTiles(urlTemplate = "//{s}.tiles.mapbox.com/v3/jcheng.map-5ebohr46/{z}/{x}/{y}.png",
attribution = 'Maps by <a href="http://www.mapbox.com/">Mapbox</a>'
) %>%
setView(lng = 6.6328200, lat = 46.5160000, zoom = 12) %>%
addMarkers(data$long, data$lat, label = data$nom)
})
center <- reactive({
subset(data, nom == input$canton)
# or whatever operation is needed to transform the selection
# to an object that contains lat and long
})
observe({
leafletProxy('map') %>%
setView(lng = center()$long, lat = center()$lat, zoom = 12)
})
GGamba
2017-03-17