Jeśli można użyć svg
zamiast jpg
powinno działać. Zobacz moją odpowiedź here.
EDIT/UPDATE:
Możliwe jest umieszczanie plików graficznych, które nie są lokalne. Zastanówmy się, skąd dodamy logo R z Wikipedii.
library(leaflet)
pts <- data.frame(Latitude = 30, Longitude = 30, file = "thing")
file <- 'https://upload.wikimedia.org/wikipedia/commons/thumb/c/c1/Rlogo.png/274px-Rlogo.png'
leaflet() %>%
addTiles %>%
addCircleMarkers(data = pts, lng =~Longitude, lat = ~Latitude,
popup = paste0("<img src = ", file, ">"))
Działa to dobrze.
Dla lokalnych plików jest to nieco bardziej skomplikowane, jak leaflet
lub lepiej bazowego htmltools
, spodziewa ścieżek względnych do określonego pliku obrazu z lokalizacji index.html
który jest przechowywany w folderze tymczasowym, który jest tworzony na tworzenie widgetów. Dlatego nie możemy z góry wiedzieć, gdzie wcześniej zapisać nasze obrazy. @Spacedman warunkiem pewnych funkcji do przechowywania leaflet
mapy w folderze określoną przez użytkownika, dzięki czemu możemy korzystać z tych, aby stworzyć mapę pracuje jak to
library (leaflet)
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"))
}
file <- '/path/to/folder/image.png'
pts <- data.frame(Latitude = 30, Longitude = 30, file = "thing")
m <- leaflet() %>%
addTiles %>%
addCircleMarkers(data = pts, lng =~Longitude, lat = ~Latitude,
popup = paste0("<img src = ", file, ">"))
saveas(m, "/path/to/folder/index.html")
Zapisujemy index.html
w tym samym folderze co png
więc teraz, jeśli otworzymy index.html
w przeglądarce popup powinien renderować png
dobrze. Powinno to również działać z plikami jpg
.
Należy zauważyć, że to nadal nie będzie wyświetlać pożądanego zachowania popup w przeglądarce RStudio. Możliwe, że obejmie to również kodowanie obrazów do base64. Wkopię się głębiej w to, kiedy znajdę czas.
UPDATE 2: Wersja rozwój MapView tej pory dedykowane funkcje dla tego:
popupImage()
do osadzania lokalne lub zdalne obrazki
popupGraph()
do osadzania kratownica, ggplot2 lub htmlwidgets na podstawie działek
Wersja rozwój MapView mogą być instalowane z:
devtools::install_github("environmentalinformatics-marburg/mapview", ref = "develop"
co: tagi $ div ( HTML ('')) – MLavoie
Nie, to po prostu się podręczne R generowane mieć dużo dodatkowego tekstu tagu nieparzystego. – jebyrnes