问题描述
我正在学习使用传单包在R中编程。
我想给图标一个角度,我正在尝试使用这段代码:
m< - leaflet()
m< - addTiles(m,urlTemplate =http://xdworld.vworld.kr:8080/2d/Base/201310/{z}/{x}/{y}.png)
m = m%>%setView(127.074167,34.456806,zoom = 9)
arrowIcon< - makeIcon(
iconUrl =arrow.png
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25,iconAnchorY = 25
)
arrowIcon< - makeIcon(
iconUrl =ARROW_B2.png
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25,iconAnchorY = 25
)
offset = 0.00#zoom 10-> 0.03,9-> 0.06,8-> 0.12,7-> 0.24
m_lat = 34.45 +抵消
m_lon = 127.07 - 抵消
m< - addMarkers(m,lng = m_lon,lat = m_lat
,options = c(markerOptions(), iconAngle = 0)
,icon = arrowIcon)
m< - addCircles(m,lng = 127.07,lat = 34.45,weight = 10,radius = 100)
m
然而,它不起作用。
这是我能让它发挥作用的唯一方法。您想使用RotatedMarker插件,
通知我将飞机图标旋转了90度。
I'm learning to program in R with the leaflet package.I want to give an angle to the icons, and am trying it with this code:
m <- leaflet()
m <- addTiles(m,urlTemplate = "http://xdworld.vworld.kr:8080/2d/Base/201310/{z}/{x}/{y}.png")
m = m %>% setView(127.074167,34.456806, zoom = 9)
arrowIcon <- makeIcon(
iconUrl = "arrow.png"
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25, iconAnchorY =25
)
arrowIcon <- makeIcon(
iconUrl = "ARROW_B2.png"
,iconWidth = 100, iconHeight = 100
,iconAnchorX = 25, iconAnchorY = 25
)
offset = 0.00 # zoom 10-> 0.03, 9->0.06, 8 -> 0.12, 7 -> 0.24
m_lat = 34.45 + offset
m_lon = 127.07 - offset
m <- addMarkers(m, lng=m_lon, lat= m_lat
, options = c( markerOptions(), iconAngle= 0)
,icon= arrowIcon)
m <- addCircles(m, lng=127.07, lat=34.45 , weight = 10,radius = 100)
m
However, it does not work.
This is the only way I could get it to work. You want to use the RotatedMarker plugin, available here. To use this plugin with R, I followed instructions here.
Two things to be aware of that I can't seem to figure out:
I can't seem to find the icon when it's stored locally - it needs to be accessible via URL. If you can fix that, please let me know.
You need to download the javascript file and save it locally. In the example below I've put it in the same directory as my R script. Theoretically you should be able to load it via a URL but that doesn't work. If you can fix that, please let me know.
So here's the working code:
library(htmltools)
library(htmlwidgets)
library(leaflet)
# this is taken from: https://gist.github.com/jcheng5/c084a59717f18e947a17955007dc5f92
rotatedMarker <- htmlDependency(
"Leaflet.rotatedMarker",
"0.1.2",
src = normalizePath("."),
script = "leaflet.rotatedMarker.js"
)
# this is taken from: https://gist.github.com/jcheng5/c084a59717f18e947a17955007dc5f92
registerPlugin <- function(map, plugin) {
map$dependencies <- c(map$dependencies, list(plugin))
map
}
leaflet() %>%
addTiles(urlTemplate = "http://xdworld.vworld.kr:8080/2d/Base/201310/{z}/{x}/{y}.png") %>%
setView(127.074167,34.456806, zoom = 9) %>%
registerPlugin(rotatedMarker) %>%
onRender("function(el, x) {
var planeIcon = L.icon({iconUrl: 'https://raw.githubusercontent.com/bbecquet/Leaflet.PolylineDecorator/master/example/icon_plane.png', iconAnchor: [16, 16]});
var pathPattern = L.marker([34.45, 127.07], {icon: planeIcon, rotationAngle: 90}).addTo(this);
}") %>%
addCircles(lng = 127.07, lat = 34.45, weight = 10, radius = 100)
Which produces:
Notice that I've rotated the plane icon 90 degrees.
这篇关于传单包中的图标旋转的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!