Не отображать маршрут, используя rMaps и плагин машины маршрутизации листовок
Я следую этому примеру:
https://gist.github.com/ramnathv/9998388
Моя цель - проложить маршрут. Используя RStudio, он работает должным образом, но когда я хочу использовать консоль R, она только строит карту, а не маршрут. У кого-нибудь есть решение для этого? Мое программное обеспечение должно выполняться с использованием консоли, а не RStudio.
Спасибо!
library(rMaps)
#library(rCharts)
map = Leaflet$new()
map$setView(c(40.74119, -73.9925), 13)
map$tileLayer(provider = 'Stamen.TonerLite')
mywaypoints = list(c(40.74119, -73.9925), c(40.73573, -73.99302))
map$addAssets(
css = "http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.css",
jshead = "http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.min.js"
)
routingTemplate = "
<script>
var mywaypoints = %s
L.Routing.control({
waypoints: [
L.latLng.apply(null, mywaypoints[0]),
L.latLng.apply(null, mywaypoints[1])
]
}).addTo(map);
</script>"
map$setTemplate(
afterScript = sprintf(routingTemplate, RJSONIO::toJSON(mywaypoints))
)
map$set(width = 800, height = 800)
map
Блестящий код является следующим
library(rCharts)
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("Title"),
sidebarPanel("MyApp" ),
mainPanel(
tabsetPanel(
tabPanel("Interactive Map", chartOutput("myChart", 'leaflet'))
)
)
),
server = function(input, output){
output$myChart <- renderMap({
map = Leaflet$new()
map$setView(c(40.74119, -73.9925), 13)
map$tileLayer(provider = 'Stamen.TonerLite')
mywaypoints = list(c(40.74119, -73.9925), c(40.73573, -73.99302))
map$addAssets(
css = "http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.css",
jshead = "http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.min.js"
)
routingTemplate = "
<script>
var mywaypoints = %s
L.Routing.control({
waypoints: [
L.latLng.apply(null, mywaypoints[0]),
L.latLng.apply(null, mywaypoints[1])
]
}).addTo(map);
</script>"
map$setTemplate(
afterScript = sprintf(routingTemplate, RJSONIO::toJSON(mywaypoints))
)
map$set(width = 800, height = 800)
map
})
}
))
1 ответ
Чтобы заставить блестящий код работать, я сделал несколько настроек (и немного стилен...)
library(rCharts)
library(shiny)
runApp(list(
ui = pageWithSidebar(
headerPanel("Title"),
sidebarPanel("MyApp" ),
mainPanel(
tabsetPanel(
tabPanel("Interactive Map",
chartOutput("baseMap", 'leaflet'),
tags$head(tags$style("http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.css")),
tags$head(tags$script(src="http://www.liedman.net/leaflet-routing-machine/dist/leaflet-routing-machine.min.js")),
uiOutput("routeMap"))
)
)
),
server = function(input, output){
output$baseMap <- renderMap({
baseMap = Leaflet$new()
baseMap$setView(c(40.74119, -73.9925), 13)
baseMap$tileLayer(provider = 'Stamen.TonerLite')
baseMap$set(width = 800, height = 800)
baseMap
})
output$routeMap <- renderUI({
mywaypoints = list(c(40.74119, -73.9925), c(40.73573, -73.99302))
tags$body(tags$script(HTML(sprintf(
"var mywaypoints = %s
L.Routing.control({
waypoints: [
L.latLng.apply(null, mywaypoints[0]),
L.latLng.apply(null, mywaypoints[1])
] }).addTo(map)", RJSONIO::toJSON(mywaypoints)
))))
})
}
))
Это работает как с RStudio, так и с консоли. У меня пока нет решения для скрипта.R.