Shiny + Leaflet - Можно ли добавлять изображения во всплывающие окна по группам? - PullRequest
0 голосов
/ 10 октября 2019

В настоящее время у меня есть блестящее приложение, которое создает листовую карту видовых точек. При наведении курсора на точку название вида отображается как метка и всплывающее окно.

leafletProxy("map", data = filteredData()) %>%
  clearMarkers() %>%
  addCircleMarkers(popup = ~as.character(species),
                   label = ~as.character(species), 
                   radius = 6,
                   stroke = TRUE,
                   weight = 1,
                   fillOpacity = 5,
                   fillColor = ~pal(species),
                   color = "black")

Я прочитал о том, как добавить изображение во всплывающее окно, но это добавит одно и то же изображение во все всплывающие окна. Я хотел бы, чтобы после нажатия на точку появилось всплывающее окно с названием вида и изображением (локальным файлом или веб-ссылкой, в зависимости от того, что проще) - чтобы у каждой группы (вида) была своя собственнаясоответствующее изображение.

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 10 октября 2019

Вы также можете повторить код здесь:

https://github.com/abenedetti/bioNPS

1 голос
/ 10 октября 2019

Да, если вы хотите, чтобы у каждой группы было свое изображение, вам нужно создать новый столбец, содержащий URL-адрес вашего изображения. И важной частью является использование тега HTML img во всплывающем окне.

См. Демонстрацию ниже.

data <- data.frame(
    lng = c(-1,0,1,2),
    lat = c(-1,0,1,2),
    label = c("p1","p2","p3","p4"),
    # some random images I picked up from google images
    # it can be both local or remote
    image_link = c(
        "https://jessehouwing.net/content/images/size/w2000/2018/07/stackoverflow-1.png",
        "https://store-images.s-microsoft.com/image/apps.18496.14408192455588579.aafb3426-654c-4eb2-b7f4-43639bdd3d75.2c522ca4-9686-4ee2-a4ac-cdbfaf92c618?mode=scale&q=90&h=1080&w=1920",
        "https://mk0jobadderjftub56m0.kinstacdn.com/wp-content/uploads/stackoverflow.com-300.jpg",
        # row number 4 use the same link as row number 1
        "https://mk0jobadderjftub56m0.kinstacdn.com/wp-content/uploads/stackoverflow.com-300.jpg"
    )
)


library(leaflet)

leaflet(data = data) %>%
    addTiles() %>%
    addCircleMarkers(
        lng = ~lng,
        lat = ~lat,
        popup = ~paste0(
            "<img src='",image_link,"' width='50px' height='50px'>"
        )
    )


...