Shinyのリーフレットパッケージを使用してマップを作成します。selectInput
を使用して、ユーザーがサイトリストから選択できるようにします。サイトリストはまた、マーカーとしてリーフレットに追加されます。R/shinyのチラシマップからズームレベルを取得するには?
ユーザーが新しいサイトを選択すると、ズームレベルを変更せずにマップを選択したサイトに再誘導する必要があります。 setView
関数を呼び出して中心点を設定できますが、ズームレベルを指定する必要があります。
setView
機能で使用できるリーフレットマップのズームレベルを取得することはできますか?
これは、リセットズームレベルで私の質問と一緒に遊ぶための最小の例です。
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:これらのコードで再生する場合は、新しいサイトを選択する前にズームレベルを調整してください。
ありがとうございます。
正確に行います(http://leafletjs.com/reference.html#map-getzoom)基礎となる[ 'getZoom'と呼ばれるJavaScript関数]がありますしかし、私はそれにアクセスする方法についてはあまりよく分かりません。 – alistaire
ありがとうございます。私はそれを以前は見つけましたが、jsを光沢のあるものに追加し、Rコードの値にアクセスする方法を確認していませんでした。 – Bangyou
'htnlwidgets :: JS'または' v8 :: 'がありますが、JavaScriptでチラシオブジェクトが呼び出されたことや、同じ環境で評価される関数を取得する方法がわかりません。 – alistaire