R/leafletでmarkersを任意の角度で回転


作業ディレクトリにleaflet.rotatedMarker.jsを配置してから、下記を実行。

library(leaflet)
library(htmltools)

lat <- rnorm(n=10, mean=35, sd=1)
lng <- rnorm(n=10, mean=135, sd=1)
dir <- runif(n=10, min=0, max=359)
X <- data.frame(lat, lng, dir)

leaflet.rotatedMarker <- htmlDependency(name="leaflet.rotatedMarker", version="0.2.0", src=getwd(), script="leaflet.rotatedMarker.js")
icon <- makeIcon(iconUrl="iconfinder_icon-arrow-up-a_211622.png", iconWidth=32, iconHeight=32)

l <- leaflet() %>% addTiles()
l$dependencies <- list(leaflet.rotatedMarker)
l %>% 
  addMarkers(lng=X$lng, lat=X$lat, icon=icon, options=markerOptions(rotationAngle=X$dir))

こっちの方がわかりやすい気がする。CircleMarkersとうまく合わせるのが難しい。

library(leaflet)
library(htmltools)

lat <- rnorm(n=10, mean=35, sd=1)
lng <- rnorm(n=10, mean=135, sd=1)
dir <- runif(n=10, min=0, max=359)
X <- data.frame(lat, lng, dir)

leaflet.rotatedMarker <- htmlDependency(name="leaflet.rotatedMarker", version="0.2.0", src=getwd(), script="leaflet.rotatedMarker.js")
icon <- makeIcon(iconUrl="https://upload.wikimedia.org/wikipedia/commons/a/aa/Aiga_uparrow.svg", iconWidth=10, iconHeight=10)

l <- leaflet() %>% addTiles()
l$dependencies <- list(leaflet.rotatedMarker)
l %>% 
  addCircleMarkers(lng=X$lng, lat=X$lat, radius=5) %>%
  addMarkers(lng=X$lng, lat=X$lat, icon=icon, options=markerOptions(rotationAngle=X$dir))