2017-04-26 1 views
0

Mein Setup: Ich verwende zwei selectizeInputs zusammen mit hcmap(), um eine Weltkarte (diese custom/world-palestine-highres) anzuzeigen, wo Benutzer das Institut und die Variable ändern können, die sie betrachten möchten. Daher wird die Karte oft gerendert! In diesem Prozess habe ich die Karte mehrmals über das Testen/Rendern der App heruntergeladen, bis ich die options(highcharter.download_map_data = FALSE) beim Browsen durch Ihr Repository - vignette auf wie download_map_data ist nicht so klar tbh gefunden. Jetzt wird die Karte jedoch gerendert, ohne sich selbst erneut herunterzuladen -> perfekt!highcharter - wo sind die bereits heruntergeladenen Karten für hcmap() auf einem (glänzenden) Server gespeichert?

Nun zu meiner Frage: Wo wird die Karte auf dem Server gespeichert, wenn das erste Mal heruntergeladen? Da bei meinem aktuellen Setup kein Benutzer die Karte erneut herunterladen wird (was ich will), aber was ist, wenn wir den Server neu starten oder Dateien verschieben müssen? Ich möchte nur sicherstellen, dass ich die App nicht ständig in Bezug auf Karten-Downloads warten muss.

EDIT # 1: Codebeispiele für JBKunst, wie der neue Code zeigt keine Daten

Mein hcmap Code, den ich vorher benutzt:

hcmap("custom/world-palestine-highres", data = datapool_credit, joinBy = c("hc-a2", "Country"), value = capital_variable, 
     name = capital_variable, 
     dataLabels = list(enabled = TRUE, format = '{point.name}'), 
     borderColor = "#FAFAFA", borderWidth = 0.1, 
     tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>% 
    hc_mapNavigation(enabled = TRUE) 

Der neue Code wie durch JBKunst vorgeschlagen :

highchart(type = "map") %>% 
    hc_add_series(
    mapData = JS("Highcharts.maps['custom/world-palestine-highres']"), 
    data = datapool_credit, joinBy = c("hc-key"), joinBy = c("hc-a2", "Country"), value = capital_variable, 
    name = capital_variable, 
    dataLabels = list(enabled = TRUE, format = '{point.name}'), 
    borderColor = "#FAFAFA", borderWidth = 0.1, 
    tooltip = list(valueDecimals = 0, valuePrefix = "€", valueSuffix = "")) %>% 
    hc_mapNavigation(enabled = TRUE) 

EDIT # 2: Struktur verwendet, um Daten für die Karte (die Zahlen geändert für Datenschutzgründen, aber nicht das Format)

> dput(head(datapool_credit)) 
structure(list(Country = c("AE", "AF", "AL", "AM", "AO", "AQ" 
), PD = c(0.506010018321176, 64.350505, 8.94600128868667, 14.29401046096271, 
25.0439479, 3.5626)), .Names = c("Country", "PD"), class = c("data.table", 
"data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x244ccb8>) 

Mit freundlichen Grüßen, Martin

Antwort

0

können Sie so etwas wie https://github.com/jbkunst/shiny-apps/tree/master/highcharter-maps-performance

Sie brauchen nicht die Karte zu speichern, verwenden. Stattdessen wird der Benutzer von https://code.highcharts.com/mapdata/custom/world-palestine-highres.js einmal pro Sitzung lesen genau wie das highcharts Beispiel:

In Ihrem ui.R Sie müssen die Karte

# ui.R 
... 
tags$script(src = "https://code.highcharts.com/mapdata/custom/world-palestine-highres.js") 
... 

Dann in den server.R hinzufügen nicht die hcmap verwenden, stattdessen verwenden highchart():

# server.R 
... 
highchart(type = "map") %>% 
    hc_add_series(
    mapData = JS("Highcharts.maps["custom/world-palestine-highres"]"), 
    data = data, joinBy = c("hc-key") 
) 
+1

Danke für Ihre schnelle Antwort! Sobald ich zur App zurückkomme, werde ich die von Ihnen vorgeschlagenen Schritte implementieren und Ihnen Bericht erstatten. –

+0

Hallo, ich habe versucht, Ihren Code zu implementieren, aber jetzt zeigt die Karte keine Daten mehr - nur eine einfache graue Karte. Bitte beachten Sie meine Bearbeitung Nr. 1 in meinem Post für die beiden Codebeispiele, da der Kommentarbereich zu klein ist, um sie hier zu veröffentlichen. –

+0

Versuchen Sie, einen 'dput' von' head (datapool_credit) 'in die Frage zu setzen, um die Daten zu sehen – jbkunst

Verwandte Themen