Я пытаюсь выяснить, как увеличить масштаб карты на основе пользовательских данных. Я начал с карты США, а затем попытался приблизиться к определенному месту на основе почтового индекса и количества миль:
shinyUI(fluidPage(
# Application title
titlePanel("Starbucks Locator"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
textInput("zip","Zip Code:", value = "18101"),
sliderInput("radius",
"Radius",
min = 1,
max = 25,
value = 15),
actionButton("go", "Submit")
),
# Show a plot of the generated distribution
mainPanel(
leafletOutput("myMap")
)
)
))
Это код сервера:
library(shiny)
library(ZipRadius)
library(leaflet)
shinyServer(function(input, output) {
data <- reactive({x <- readRDS("Starbucks.rds")})
output$myMap <- renderLeaflet({
df <- data()
m <- leaflet(data = df) %>%
addTiles() %>%
addMarkers(lng = ~Lon, lat = ~Lat)
})
eventReactive(input$go, {
zip_include <- zipRadius(input$zip, input$radius)
})
leafletProxy("myMap") %>% fitBounds(~min(zip_include$longitude), ~min(zip_include$latitude),
~max(zip_include$longitude), ~max(zip_include$latitude))
})
Я использую пакет ZipRadius, чтобы найти, какие почтовые индексы input$distance
удалены от input$zip
. Затем я хочу увеличить введенный почтовый индекс как центр и границы, определенные радиусом (input$distance
). Оригинальная карта leaflet
работает, но leafletProxy
- это то, где у меня проблема. Есть мысли о том, как это сделать? Я пытаюсь использовать fitbounds
, так как он может учитывать минимальные и максимальные широты и долготы. Я думаю, что проблема может быть с eventReactive
, но не уверен, как это проверить. Набор данных доступен здесь на github .