gpt4 book ai didi

r - 传单包中的图标旋转

转载 作者:行者123 更新时间:2023-12-03 16:16:13 26 4
gpt4 key购买 nike

我正在学习使用传单包在 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 + 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

但是,它不起作用。

最佳答案

这是我让它工作的唯一方法。您想使用 RotatedMarker 插件,可用 here 。为了在 R 中使用这个插件,我按照说明 here

有两件事要注意,我似乎无法弄清楚:

  • 当图标存储在本地时,我似乎无法找到它 - 它需要通过 URL 访问。如果你能解决这个问题,请告诉我。
  • 您需要下载javascript文件并保存到本地。在下面的示例中,我将它放在与我的 R 脚本相同的目录中。从理论上讲,您应该能够通过 URL 加载它,但这不起作用。如果你能解决这个问题,请告诉我。

  • 所以这是工作代码:
    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)

    其中产生:
    Leaflet in R with rotated icons!

    请注意,我已将平面图标旋转了 90 度。

    关于r - 传单包中的图标旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34020079/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com