如何使用传单、闪亮的应用程序在地图上显示路径和距离?

问题描述 投票:0回答:1

我想在闪亮的应用程序中使用传单包显示两个位置之间的距离。 我不知道该怎么做。一条线应连接地图上的两点并在其上显示距离。 请找到示例图片:

对此的任何帮助将不胜感激。

r shiny leaflet
1个回答
1
投票

尝试以下方法:

library(leaflet)
library(osrm)

route = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = 'full')
# route_simple = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = 'simplified')
route_summary = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = FALSE)

leaflet() %>% addTiles() %>% 
  addMarkers(c(115.6813467,150.3715249), c(-32.0397559,-33.8469759)) %>% 
  addPolylines(route$lon,route$lat, 
               label = paste(round(route_summary[1]/60), 'hr - ', round(route_summary[2]), 'km'), 
               labelOptions = labelOptions(noHide = TRUE))

leaflet() %>% addTiles() %>% 
  addMarkers(c(115.6813467,150.3715249), c(-32.0397559,-33.8469759)) %>% 
  addPolylines(route$lon,route$lat, 
               popup = paste(round(route_summary[1]/60), 'hr', br(), round(route_summary[2]), 'km'))

我在上面的代码中添加了

route_simple
,但没有使用它。它只是在路线上节省了更少的点,因此细节较少,但运行速度更快。随意玩耍。在第二个示例中,我还使用了弹出窗口而不是标签。您需要点击路线才能打开它。

标签示例

弹出示例

如果您想要一个闪亮的应用程序,请参阅下文:

library(leaflet)
library(osrm)

route = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = 'full')
# route_simple = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = 'simplified')
route_summary = osrmRoute(c(115.6813467,-32.0397559), c(150.3715249,-33.8469759), overview = FALSE)

library(shiny)

ui <- fluidPage(
  leafletOutput('map')
)

server <- function(input, output, session) {
  output$map <- renderLeaflet({
    leaflet() %>% addTiles() %>% 
      addMarkers(c(115.6813467,150.3715249), c(-32.0397559,-33.8469759)) %>% 
      addPolylines(route$lon,route$lat, 
                   label = paste(round(route_summary[1]/60), 'hr - ', round(route_summary[2]), 'km'), 
                   labelOptions = labelOptions(noHide = TRUE))
  })
}

shinyApp(ui, server)
© www.soinside.com 2019 - 2024. All rights reserved.