2014-06-17 8 views
5

Używam świetnego demo Ramnatha Vaidyanathana pod numerem http://rmaps.github.io/blog/posts/leaflet-heat-maps/index.html i chciałbym odtworzyć jego mapę cieplną dla mojej błyszczącej aplikacji.Tworzenie map ciepła ulotki w r i błyszczące za pomocą rCharts

Kiedy próbuję użyć kodu Ramnatha w lśniący sposób, ale uda mi się uzyskać mapę, ale nie mapę ciepła. Prawdopodobnie jedną z przyczyn moich problemów jest to, że oryginalny kod z Ramnath używa rMaps podczas korzystania z rCharts (również opracowanego przez Ramnatha), ponieważ jest bardziej rozwinięty/lepiej zintegrowany z błyszczącym i oczywiście zawiera ulotkę. Próbowałem użyć rMaps z ogólnymi komendami HTML języka błyszczącego, bez powodzenia.

To błyszczące kod, który nie działa (to po prostu wyświetla mapę ignorując biblioteki hotspot):

library(rCharts) 
library(shiny) 

runApp(
list(ui = (pageWithSidebar(
headerPanel("Heatmap"), 
sidebarPanel(width=2), 
mainPanel(
mapOutput("leafmap") 
) 
)), 
server = function(input, output) { 
output$leafmap <- renderMap({ 
L2 <- Leaflet$new() 
L2$setView(c(29.7632836, -95.3632715), 10) 
L2$tileLayer(provider = "MapQuestOpen.OSM") 
data(crime, package = 'ggmap') 
library(plyr) 
crime_dat = ddply(crime, .(lat, lon), summarise, count = length(address)) 
crime_dat = toJSONArray2(na.omit(crime_dat), json = F, names = F) 
L2$addAssets(jshead = c(
"http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js" 
)) 
L2$setTemplate(afterScript = sprintf(" 
           <script> 
           var addressPoints = %s 
           var heat = L.heatLayer(addressPoints).addTo(map)   
           </script> 
           ", rjson::toJSON(crime_dat) 
)) 

L2 
}) 
} 
)) 
+0

[Mapa ciepła w błyszczącym trybie r Wykresy] (http://stackoverflow.com/q/33193546/4002530) ma rozwiązanie – tospig

Odpowiedz

4

Turning mój komentarz na odpowiedź (making use of this question/answer)

library(rCharts) 
library(shiny) 
library(data.table) 

runApp(
    list(ui = (pageWithSidebar(
    headerPanel("Heatmap"), 
    sidebarPanel(width=2), 
    mainPanel(
     chartOutput("baseMap", "leaflet"), 
     tags$style('.leaflet {height: 500px;}'), 
    tags$head(tags$script(src="http://leaflet.github.io/Leaflet.heat/dist/leaflet-heat.js")), 
     uiOutput('heatMap') 
    ) 
)), 
    server = function(input, output) { 

    data(crime, package="ggmap") 
    crime <- as.data.table(crime) 

    output$baseMap <- renderMap({ 
     baseMap <- Leaflet$new() 
     baseMap$setView(c(29.7632836, -95.3632715), 10) 
     baseMap$tileLayer(provider = "MapQuestOpen.OSM") 
     baseMap 
    }) 

    output$heatMap <- renderUI({ 

     ## changed to use data.table for speed 
     crime_dat <- crime[(lat != ""), .(count = .N), by=.(lat, lon)] 
      ## there's a blank in there somewhere 

     ## I was having issues with toJSON, so I'm creating my own JSON 
     j <- paste0("[",crime_dat[,lat], ",", crime_dat[,lon], ",", crime_dat[,count], "]", collapse=",") 
     j <- paste0("[",j,"]") 

     tags$body(tags$script(HTML(sprintf(" 
         var addressPoints = %s 
         var heat = L.heatLayer(addressPoints).addTo(map)" 
             , j 
    )))) 

    }) 
    } 
)) 

I aby pokazać, że działa

enter image description here

+0

mogę umieścić gdzieś skali, kiedy być niebieski, pomarańczowy lub czerwony? –

Powiązane problemy