Сеть для R Shiny / R Studio + rMaps с KML



Это продолжение вопроса, опубликованного здесь



Используя код, разработанный jdharrison и Обсуждение здесь, вот минимальный пользовательский интерфейс.R:



library(shiny);library(rCharts)
shinyUI(fluidPage(
mainPanel(
tabPanel("Interactive", tags$style('.leaflet {height: 1000px;}'),
showOutput('mapPlot', 'leaflet'))
)) )


И минимальный сервер.R:



library(shiny);library(rCharts);library(rMaps)
shinyServer(function(input, output,session) {
output$mapPlot <- renderMap({
map1 = Leaflet$new()
map1$setView(c(45.5236, -122.675), 13)
map1$tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")
map1$addAssets(css = NULL, jshead = 'http://harrywood.co.uk/maps/examples/leaflet/leaflet-plugins/layer/vector/KML.js')
map1$addKML('leaflet/placemark.kml')
leafletLib <- file.path(find.package("rMaps"), "libraries", "leaflet")
sampleKml <- readLines('http://kml-samples.googlecode.com/svn/trunk/kml/Placemark/placemark.kml')
write(sampleKml, file.path(leafletLib, 'placemark.kml'))
map1
}) })


Когда я запускаю shiny::runApp() на моем сервере с RStudio или на живом веб-сайте, я получаю пустую карту, аналогичную проблеме, которая была у меня локально до вышеупомянутого решения.



Я уверен, что это как-то связано с расположением файла KML и, возможно, файла разрешения, но у меня возникли некоторые трудности с получением его для работы с файлом KML.



Спасибо за любые советы или ресурсы, которые у вас могут быть.



Обновление: я попробовал его локально и получил тот же результат. Так что я не уверен, что это как-то связано с моей серверной сетью...

603   1  

1 ответ:

Здесь есть несколько вопросов. rCharts переопределяет rMaps, когда они оба загружены. Таким образом, вызов Leaflet$new на самом деле исходит из пакета rCharts. Также невозможно использовать метод addAssets, который использовался ранее. Необходимо изменить файл libraries/leaflet/config.yml и добавить leaflet-kml.js ссылка. Также необходимо загрузить этот файл в libraries/leaflet/external/leaflet-kml.js

Сначала мы добавим плагин к файлам javascript листовки rcharts

require(yaml)
leafletLib <- file.path(find.package("rCharts"), "libraries", "leaflet")
rMapsConfig <- yaml.load_file(file.path(leafletLib, "config.yml"))
# add a kml library
kmlLib <- readLines("http://harrywood.co.uk/maps/examples/leaflet/leaflet-plugins/layer/vector/KML.js")
write(kmlLib, file.path(leafletLib, "external", "leaflet-kml.js"))
# add the library to config.yml
rMapsConfig$leaflet$jshead <- union(rMapsConfig$leaflet$jshead , "external/leaflet-kml.js")
write(as.yaml(rMapsConfig), file.path(leafletLib, "config.yml"))

Теперь мы можем посмотреть на использование блестящего

library(shiny)
library(rCharts)
library(rMaps)

runApp(
  list(ui =fluidPage(
    titlePanel("Hello Shiny!"),

    sidebarLayout(
      sidebarPanel(
        sliderInput("obs", "Number of observations:", min = 0, max = 1000, value = 500)
      ), 
      mainPanel(
        tabsetPanel(
          tabPanel("Interactive", tags$style('.leaflet {height: 1000px;}'),
                   showOutput('mapPlot', 'leaflet'))
        )
      )
    )
  ),
  server = function(input, output,session) {
    output$mapPlot <- renderUI({
      map1 = Leaflet$new()
      map1$setView(c(45.5236, -122.675), 13)
      map1$tileLayer("http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png")
      map1$addKML('leaflet/placemark.kml')
      leafletLib <- file.path(find.package("rCharts"), "libraries", "leaflet")
      sampleKml <- readLines('http://kml-samples.googlecode.com/svn/trunk/kml/Placemark/placemark.kml')
      write(sampleKml, file.path(leafletLib, 'placemark.kml'))
      HTML(map1$html(chartId = "mapPlot"))})     
  })
)

новый образ

Comments

    Ничего не найдено.