Укажите радиус точки, используя Java Сценарий htmlwidget в буклете R - PullRequest
0 голосов
/ 07 января 2020

Я работаю с (очень полезным) кодом, предоставленным здесь https://github.com/timelyportfolio/leaftime/blob/master/inst/examples/example_leaftime.R, чтобы построить карту временных рядов, используя буклет в R. Я не могу понять, как определить радиус каждой точки на моя карта, и надеюсь, что кто-то сможет указать мне правильное направление.

Мои тестовые данные выглядят следующим образом:

data <- data.frame(

"latitude" = c(36.998953, 38.998607, 40.547953, 36.475103, 34.634023),

"longitude" = c(-78.766255, -81.051412, -78.969508, -83.298121, -78.541041),

"start" = seq.Date(as.Date("2009-01-01"), by="day", length.out = 5),

"end" = seq.Date(as.Date("2009-01-01"), by = "day", length.out = 5) + 1,

"radius" = c(10, 8, 5, 12, 7)

)

Я могу создать основу c карта временных рядов с использованием кода здесь:

library(leaflet)
library(leaftime)
library(htmltools)
library(geojsonio)
library(geojsonlint)

leaflet(geojsonio::geojson_json(data, lat="latitude", lon="longitude")) %>%
  addTiles() %>%
  setView(-79.771504, 36.854041, 2) %>%
  addTimeline(
    sliderOpts = sliderOptions(
      formatOutput = htmlwidgets::JS("function(date) {return new 
      Date(date).toDateString()}"), position = "bottomright", duration = 3000),
    timelineOpts = timelineOptions(
      styleOptions = styleOptions(radius = 5, color = "black", fillColor = "blue", fillOpacity = 0.60)))

Но изменение этого кода для настройки радиуса для каждой точки не работает:

leaflet(geojsonio::geojson_json(data, lat="latitude", lon="longitude")) %>%
  addTiles() %>%
  setView(-79.771504, 36.854041, 2) %>%
  addTimeline(
    sliderOpts = sliderOptions(
      formatOutput = htmlwidgets::JS("function(date) {return new 
      Date(date).toDateString()}"), position = "bottomright", duration = 3000),
    timelineOpts = timelineOptions(
      styleOptions = styleOptions(radius = htmlwidgets::JS("function getRadius(d) {return +d.properties.radius}"), 
      color = "black", fillColor = "blue", fillOpacity = 0.60)))

Кажется, что ошибка возникает при вызове функция сценария java getRadius из JS htmlwidget, но я не знаком с языком сценария java и не знаю, как это исправить. Спасибо за любую помощь!

1 Ответ

0 голосов
/ 08 января 2020

Если вы имеете в виду код JS, попробуйте: function getRadius(d) {return d.properties.radius}

...