我有一个要求,我有一些城市的经度和纬度。
Bangalore - 12.9539974,77.6309395
Chennai - 13.0473748,79.9288083
Delhi - 28.6921165,76.8079346
Mumbai - 19.0821978,72.741098
我创建了一个输入框,其中列出了一些城市
根据此输入,我需要放大这些城市。
我该怎么做?
您可以通过传单来做到这一点
library(dplyr)
library(shiny)
library(leaflet)
data_cities = data.frame(
city = c('Bangalore', 'Chennai', 'Delhi', 'Mumbai'),
lat = c(12.9539974, 13.0473748, 28.6921165, 19.0821978),
lng = c(77.6309395, 79.9288083, 76.8079346, 72.741098)
)
ui <- fluidPage(
selectInput("select_city", label = "Select city", choices = data_cities$city),
leafletOutput("map")
)
server <- function(input, output) {
# Initiate the map
output$map <- renderLeaflet({
leaflet() %>%
addTiles(options = providerTileOptions(noWrap = TRUE))
})
#Zoom when select city
observeEvent(input$select_city, {
selected_city_data <- data_cities %>%
filter(city == input$select_city)
leafletProxy("map") %>%
setView(lng = selected_city_data$lng, lat = selected_city_data$lat, zoom=8)
})
}
shinyApp(ui = ui, server = server)
嗯,您可以使用一个简单的 API 来确定选择的位置。 网上有几个可用的 API。 我建议使用免费的 API,例如 IPAPI。 您所需要做的就是浏览他们官方网站上的文档,以便近距离了解 API 的工作原理。
在这种情况下,您可以使用包“ggmap”及其内部名为 qmap() 的函数。 或者您也可以检查名为“maps”的包。安装此包并使用map.cities()函数。
还有一个与之相同的库,称为 rMaps。这个包可以在 github 上找到。
我认为有很多方法可以实现这一点,也许它应该以某种方式起作用。无论如何,阅读文档是有必要的。
HTML: <div id="buttons"></div>
JS:
var Balganore = L.map('Bangalore').setView([12.9539974,77.6309395], 8);
Jquery:
$('#buttons').append(
$('<div>').text('City choose:'),
$('<label>').append(
$('<input>').prop({'type':'checkbox', 'checked':true}).click(function(){
$(Bangalore).toggle();
}),
'Bangalore'
),)