Как анимировать поток над линией на листовой карте в R? - PullRequest
0 голосов
/ 14 февраля 2019

Как анимировать поток по линии на листовой карте в R?

Есть ли способ использовать leaflet-ant-path (https://github.com/rubenspgcavalcante/leaflet-ant-path) в R?

library(sf)
library(leaflet)

pts <-  matrix(1:10, , 2)
ls1 <-  st_linestring(pts)
leaflet() %>% 
   addTiles() %>% 
   addPolylines(data= ls1)

1 Ответ

0 голосов
/ 21 февраля 2019

Я не уверен, что показывает ваш код, но я смог понять это, связав несколько потоков.Во-первых, я использовал этот gist от Джо Чена, чтобы убедиться, что библиотека antPath была правильно загружена в браузер.Для вызова antPath мне понадобился CDN, и, к счастью, есть CDN, который был описан в этом закрытом PR

Наконец, мне пришлось копаться в функции onRender из htmlwidgets для правильного выполнения кода js.Я добавил точки вручную как LatLong объекты здесь в коде JS.Я уверен, что есть способ передать их непосредственно из R-сессии, но именно это я и использовал для этой работы.

Полный код:

library(leaflet)
library(htmltools)
library(htmlwidgets)

antPlugin <- htmlDependency(name = "leaflet-ant-path", version = "1.2.1",
                             src = c(href = "http://unpkg.com/leaflet-ant-path@1.2.1/dist/"),
                             script = "leaflet-ant-path.js"
)

registerPlugin <- function(map, plugin) {
  map$dependencies <- c(map$dependencies, list(plugin))
  map
}

leaflet() %>%
  setView(-0.18, 51.50, 14) %>%
  addTiles() %>%
  registerPlugin(antPlugin) %>%
  onRender("function(el, x) {
    polylinePoints = [
            new L.LatLng(51.51032167, -0.187084072),
            new L.LatLng(51.51019814, -0.187030437),
            new L.LatLng(51.51013137, -0.187845822),
            new L.LatLng(51.50457546, -0.185415744),
            new L.LatLng(51.50476244, -0.181875224),
            new L.LatLng(51.50457546, -0.179622177),
            new L.LatLng(51.50409462, -0.175459380),
            new L.LatLng(51.50368057, -0.174365042),
            new L.LatLng(51.50299938, -0.174729820),
            new L.LatLng(51.50213117, -0.174686903),
            new L.LatLng(51.50199760, -0.177412030),
            new L.LatLng(51.50179725, -0.180373197),
            new L.LatLng(51.50143660, -0.180351735),
         ];
    polylineOptions = {color: 'blue', weight: 6, opacity: 0.9};
    L.polyline.antPath(polylinePoints, polylineOptions).addTo(this);
  }")

Это не отображаетсяв небольшом окне предварительного просмотра RStudio, но при расширении до полного браузера это выглядит так:

enter image description here

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