2015-05-19 15 views
6

Diciamo che ho un codice come questoCome accedere mappa generata dal volantino in R

# Install devtools if needed 
if(!require(devtools)) install.packages("devtools") 
# view rawif-devtools.R hosted with ❤ by GitHub 
# Install leaflet package 
if(!require(leaflet)) install_github("rstudio/leaflet") 
library("leaflet") 
mymap <- leaflet() 
mymap <- addTiles(mymap) 
mymap 

Questo lo apre in Chrome con un percorso file come questo:

file:///var/folders/8x/v2tk5zy51x51jx9jbp0m29qr0000gn/T/RtmpQaeu1E/viewhtmlf74547061f7d/index.html. 

Diciamo che voglio per pubblicare questo sul mio blog. In che modo posso accedere esattamente a questo file html? C'è un modo per impostare dove viene salvato? Ho pensato che sarebbe stato salvato nella directory di lavoro, ma non è così. Credo che potrei accedervi tramite il terminale, ma spero che ci sia un modo più semplice.

risposta

15

Ho sviluppato un paio di funzioni che consentono di salvare una mappa di volantini in un punto diverso da una cartella temporanea.

Vedere il succo qui: https://gist.github.com/barryrowlingson/d066a7ace15cf119681a per l'intero informazioni, la versione corta è queste due funzioni:

saveas <- function(map, file){ 
    class(map) <- c("saveas",class(map)) 
    attr(map,"filesave")=file 
    map 
} 

print.saveas <- function(x, ...){ 
    class(x) = class(x)[class(x)!="saveas"] 
    htmltools::save_html(x, file=attr(x,"filesave")) 
} 

allora tutto ciò che fai è:

leaflet() %>% etc etc %>% saveas("/wherever/you/want/index.html") 

o nel vostro modo di lavorare:

mymap <- leaflet() 
mymap <- addwhatever(mymap) 
saveas(mymap, "/wherever/you/want/index.html") 

A quel punto la cartella /wherever/you/want dovrebbe avere un auto-contai insieme di file per la mappa. Penso che dovrebbe essere portatile, vale a dire lavorare su qualsiasi server web, ma non posso garantire che ...

3

Una volta aperta la mappa in chrome (o qualsiasi altro browser), è sufficiente andare su "File -> Save as" e quindi salvare la pagina .html in una directory di destinazione con un nome definito dall'utente. (Oppure premere semplicemente cmd + s su mac o ctrl + s su Windows.) Questo di solito è ciò che faccio quando creo una webmap con R o Rmarkdown.


Naturalmente è anche possibile caricare il file di Rpubs.com facendo clic sul pulsante "Pubblica", quando si crea la tua mappa con Rmarkdown. Da lì puoi facilmente accedervi tramite un link fornito.

+0

ho provato questo e completamente incasinato la mappa. Ad esempio, nella mappa originale, posso ingrandire, rimpicciolire, ecc., Ma nella nuova mappa, non posso. Inoltre, per qualche strana ragione, è diventato tutto confuso. La parte in alto a destra era al centro, la parte centrale era in basso a sinistra e tutto è stato spostato in un modo apparentemente casuale, non assomiglia all'originale. Qualche idea sul perché questo sta accadendo? – ytk

+1

non si può davvero pensare a un motivo per cui si stanno affrontando questi problemi. Ho provato a caricare il tuo codice su rpubs e funziona bene: http://rpubs.com/SmaRtin/so-question – maRtin

+1

Sembra che il CSS per le tessere non sia stato caricato. La funzionalità "salva con nome" del browser a volte si sbaglia. – Spacedman

1

Quando provo ad installare un pacchetto chiamato "volantino", la finestra di dialogo con CRAN mostra solo un pacchetto chiamato leafletR . L'installazione e il caricamento del pacchetto hanno esito positivo con un messaggio alla console:

Your leaflet map has been saved under /Users/myuser_name/map/map.html 

E quella mappa ha la funzionalità desiderata. Data la quantità di informazioni a cui posso accedere dal browser Web, suppongo di essere effettivamente interfacciato tramite Chrome a un server OpenStreetMap piuttosto che interagire con un servizio dati del file su disco.

Non esiste alcuna funzione addTiles nella versione scaricata da CRAN. E usando sos :: findFn non lo trova in nessun altro pacchetto. Questa potrebbe essere una nuova funzione disponibile solo nella versione github: https://github.com/chgrl/leafletR

Ulteriori ricerca mostra che questo essere ospitato solo su RStudio e non su CRAN: http://robinlovelace.net/r/2015/02/01/leaflet-r-package.html

avevo bisogno di una nuova sessione da quando stavo ottenendo errore che Avevo il sospetto che fossero causa avendo entrambi volantini e volantini caricati allo stesso tempo. Nel mio browser ho fatto clic con il tasto sinistro del mouse per aprire una finestra ViewSource e quindi selezionare e copiare di seguito.Sia Chrome che Firefox hanno la capacità di visualizzare il codice sottostante e supportare la selezione e la copia su un editor.

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"/> 
<script src="lib/htmlwidgets-0.3.2/htmlwidgets.js"></script> 
<script src="lib/jquery-1.11.1/jquery.min.js"></script> 
<link href="lib/leaflet-0.7.3/leaflet.css" rel="stylesheet" /> 
<script src="lib/leaflet-0.7.3/leaflet.js"></script> 
<link href="lib/leafletfix-1.0.0/leafletfix.css" rel="stylesheet" /> 
<script src="lib/leaflet-binding-0.0.16/leaflet.js"></script> 

</head> 
<body style="background-color:white;"> 
<div id="htmlwidget_container"> 
    <div id="htmlwidget-3689" style="width:100%;height:400px;" class="leaflet"></div> 
</div> 
<script type="application/json" data-for="htmlwidget-3689">{ "x": { 
"calls": [ 
{ 
"method": "addTiles", 
"args": [ 
"http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png", 
null, 
{ 
"minZoom":     0, 
"maxZoom":    18, 
"maxNativeZoom": null, 
"tileSize":    256, 
"subdomains": "abc", 
"errorTileUrl": "", 
"tms": false, 
"continuousWorld": false, 
"noWrap": false, 
"zoomOffset":     0, 
"zoomReverse": false, 
"opacity":     1, 
"zIndex": null, 
"unloadInvisibleTiles": null, 
"updateWhenIdle": null, 
"detectRetina": false, 
"reuseTiles": false, 
"attribution": "&copy; <a href=\"http://openstreetmap.org\">OpenStreetMap</a> contributors, <a href=\"http://creativecommons.org/licenses/by-sa/2.0/\">CC-BY-SA</a>" 
} 
] 
} 
] 
},"evals": [ ] }</script> 
<script type="application/htmlwidget-sizing" data-for="htmlwidget-3689">{ "viewer": { 
"width": "100%", 
"height":    400, 
"padding":     0, 
"fill": true 
},"browser": { 
"width": "100%", 
"height":    400, 
"padding":     0, 
"fill": true 
} }</script> 
</body> 
</html> 

Il codice da solo non è sufficiente. Il resto dei file di supporto richiesti verrà salvato in una cartella con lo stesso nome del file HTML e il browser "Salva con nome ..." funzione è meglio per questo:

enter image description here

+0

Il downvoter si preoccupa di spiegare? –

8

una risposta tardiva:

library(leaflet) 
mymap <- leaflet() %>% 
    addTiles() 
library(htmlwidgets) 
saveWidget(widget = mymap, file = "/wherever/you/want/mymap.html") 

Einar

Problemi correlati