R - листовка - всплывающая подсказка (ярлык) - PullRequest
0 голосов
/ 12 апреля 2020

После прочтения решения этого вопроса . Я попытался адаптировать решение для метки ( не всплывающее окно ).

Когда я пробую решение для всплывающего окна. Он отлично работает

library(leaflet)
library(tidyverse)
library(htmlwidgets)
library(htmltools)
library(sparkline)
library(highcharter)

as.character.htmlwidget <- function(x, ...) {
  htmltools::HTML(
    htmltools:::as.character.shiny.tag.list(
      htmlwidgets:::as.tags.htmlwidget(
        x
      ),
      ...
    )
  )
}


add_deps <- function(dtbl, name, pkg = name) {
  tagList(
    dtbl,
    htmlwidgets::getDependency(name, pkg)
  )
}

leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(lat = 45.4, lng = 14.9,
                   popup = list(paste(as.character(
                     hchart(data.frame(x = 1:10, y = 1:10), type = "line", hcaes(x = x, y = y)) %>% 
                     hc_size(width = 300, height = 200)
                   ))),
                   popupOptions = popupOptions(minWidth = 300, maxHeight = 200)) %>%
  onRender(
    "
function(el,x) {
  this.on('popupopen', function() {HTMLWidgets.staticRender();})
}
") %>%
  add_deps("highchart", 'highcharter') %>%
  browsable()

enter image description here

Но когда я пытаюсь найти ярлык. Я не могу достичь того же результата. Кто-нибудь может объяснить, почему, пожалуйста?

leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(lat = 45.4, lng = 14.9,
                   label =  lapply(paste(as.character(
                     hchart(data.frame(x = 1:10, y = 1:10), type = "line", hcaes(x = x, y = y)) %>% 
                     hc_size(width = 300, height = 200))), htmltools::HTML),
                   labelOptions = popupOptions(minWidth = 300, maxHeight = 200) 
                   )  %>%
  onRender(
    "
function(el,x) {
  this.on('mouseOver', function() {HTMLWidgets.staticRender();})
}
") %>%
  add_deps("highchart", 'highcharter') %>%
  browsable()

enter image description here

1 Ответ

1 голос
/ 13 апреля 2020

Извините, ответ был прост, функция должна быть:

leaflet() %>% 
  addTiles() %>% 
  addCircleMarkers(lat = 45.4, lng = 14.9,
                   label =  lapply(paste(as.character(
                     hchart(data.frame(x = 1:10, y = 1:10), type = "line", hcaes(x = x, y = y)) %>% 
                     hc_size(width = 300, height = 200))), htmltools::HTML),
                   labelOptions = popupOptions(minWidth = 300, maxHeight = 200) 
                   )  %>%
  onRender(
    "
function(el,x) {
  this.on('tooltipopen', function() {HTMLWidgets.staticRender();})
}
") %>%
  add_deps("highchart", 'highcharter') %>%
  browsable()

Это всплывающее окно не mouseOver Надеюсь, это кому-нибудь поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...