Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R单张图船舶方向图_R_Leaflet_Htmlwidgets_Htmltools - Fatal编程技术网

R单张图船舶方向图

R单张图船舶方向图,r,leaflet,htmlwidgets,htmltools,R,Leaflet,Htmlwidgets,Htmltools,我掌握了船只/船只的位置及其航行路线的信息。我想把它们画在一张带有自定义图标的传单地图上,看起来像一艘船。我发现glyphicons中的标记图标最合适。以下是一些数据: dput(head(x)) structure(list(boatName = c("Conti Benguela", "Sunny Bay", "Sunny Horizon", "FMT URLA", "Qi Xiang 22", "STI Solidarity"), lat = c(37.115365, 38.47720

我掌握了船只/船只的位置及其航行路线的信息。我想把它们画在一张带有自定义图标的传单地图上,看起来像一艘船。我发现
glyphicons
中的
标记
图标最合适。以下是一些数据:

dput(head(x))
structure(list(boatName = c("Conti Benguela", "Sunny Bay", "Sunny Horizon", 
"FMT URLA", "Qi Xiang 22", "STI Solidarity"), lat = c(37.115365, 
38.4772017, 14.632, 56.80515, 51.31172, -2.2783283), lon = c(15.2682183, 
-8.7888783, -79.5806667, 7.601885, -143.5678933, 46.6328383), 
    cog = c("16", "331", "182", "21", "288", "72")), row.names = c(NA, 
6L), class = "data.frame")
cog
表示图标转换为旋转角度的地面路线。我正在使用以下代码当前绘制船舶的位置以及根据船舶航向的旋转:

shipIcon <- makeAwesomeIcon("tag",iconRotate = x$cog)
leaflet() %>% addTiles() %>% 
  addAwesomeMarkers(lng=x$lon,lat=x$lat,icon=shipIcon,popup = x$boatName)
shipIcon%addTiles()%%>%
添加标记(lng=x$lon,lat=x$lat,icon=shipIcon,popup=x$boatName)
但是,正如您所看到的,
makeAwesomeIcon
为图标添加了一个我不想要的背景标记。我已经看过了,而且后者正是我想要做的。在没有标记背景的情况下,如何实现显示自定义船舶图标的任务,并根据其转向路线旋转?

概述 为了绘制图标方向,我遵循了三个步骤:

  • 要在传单地图上呈现HTML图标,我将替换为

  • 为了启用图标旋转,我存储了和的本地副本

  • 最后,为了指定图标应该旋转多少度,我将
    cog
    变量放在
    rotationAngle
    参数的
    markerOptions()

  • 注意:步骤2和步骤3取自对SO问题的回答和评论。所有的功劳都归于@rrs和@ufo

    在做任何事情之前,我运行了您的代码并获得了以下传单地图:

    使用
    boat.icon
    ,图标被旋转,但更难阅读:

    最后,我决定使用亮橙色和北箭头图标来显示位置和旋转角度:

    代码
    您可能希望使用HTML图标来代替依赖
    makeAwesomeIcon()
    。请看这里的例子:。@aspiringurbandatascientist感谢您的评论,但这并不能真正解决我的问题。我正在查看图标的旋转,这可以通过
    makeAwesomeIcon()
    实现,但不需要标记背景。
    icons()
    函数没有旋转参数。非常感谢您的详细回答。完全解决了我的问题。我正在为船只使用一个定制图标,现在看起来相当不错。分享图片。@Dhiraj那些飞船图标看起来很棒-读者可以看到密度和旋转!感谢分享图片和发布一个很棒的问题。谢谢你的回答。如果希望图标从图标图像的中心旋转,请更改.js文件的此行
    this.options.rotationOrigin=this.options.rotationOrigin | | iconAnchor | | | center-bottom'
    to
    this.options.rotationOrigin=this.options.rotationOrigin | | | iconAnchor | | | | center |
    
    # load necessary packages
    library( htmltools )
    library( htmlwidgets )
    library( leaflet )
    
    # this is taken from: https://gist.github.com/jcheng5/c084a59717f18e947a17955007dc5f92
    # "Leaflet.rotatedMarker" is taken from https://raw.githubusercontent.com/bbecquet/Leaflet.RotatedMarker/master/leaflet.rotatedMarker.js
    rotatedMarker <- 
      htmlDependency( name = "Leaflet.rotatedMarker" # note: this .js file has to be copied and stored in your current working directory 
                      , version = "0.1.2"
                      , src = normalizePath( path = getwd() )
                      , 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
    }
    
    # store data
    df <-
      structure(list(boatName = c("Conti Benguela", "Sunny Bay", "Sunny Horizon", 
                                  "FMT URLA", "Qi Xiang 22", "STI Solidarity"), lat = c(37.115365, 
                                                                                        38.4772017, 14.632, 56.80515, 51.31172, -2.2783283), lon = c(15.2682183, 
                                                                                                                                                     -8.7888783, -79.5806667, 7.601885, -143.5678933, 46.6328383), 
                     cog = c("16", "331", "182", "21", "288", "72")), row.names = c(NA, 
                                                                                    6L), class = "data.frame")
    
    # store boat png
    boat.file <- "http://cdn.onlinewebfonts.com/svg/download_498189.png"
    
    # store north arrow png
    north.arrow.file <- "https://upload.wikimedia.org/wikipedia/commons/a/aa/Aiga_uparrow.svg"
    
    # make boat icon
    boat.icon <- 
      makeIcon( iconUrl = boat.file
                , iconWidth = 25
                , iconHeight = 25 )
    
    # make north arrow icon
    north.arrow.icon <-
      makeIcon( iconUrl = north.arrow.file
                , iconWidth = 10
                , iconHeight = 10 )
    
    # display leaflet map
    leaflet( data = df ) %>%
      addProviderTiles( provider = "OpenStreetMap.BlackAndWhite" ) %>%
      registerPlugin( plugin = rotatedMarker ) %>%
      addCircleMarkers( lng = ~lon
                        , lat = ~lat
                        , radius = 5
                        , fillColor = "orange"
                        , fillOpacity = 1
                        , stroke = FALSE ) %>%
      addMarkers( lng = ~lon
                  , lat = ~lat
                  , label = ~boatName
                  , icon = north.arrow.icon
                  , options = markerOptions( rotationAngle = ~cog ) )
    
    # end of script #
    
    R version 3.4.4 (2018-03-15)
    Platform: x86_64-apple-darwin15.6.0 (64-bit)
    Running under: macOS High Sierra 10.13.2
    
    Matrix products: default
    BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
    LAPACK: /Library/Frameworks/R.framework/Versions/3.4/Resources/lib/libRlapack.dylib
    
    locale:
    [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
    
    attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods  
    [7] base     
    
    other attached packages:
    [1] leaflet_1.1.0.9000 htmlwidgets_1.0    htmltools_0.3.6   
    
    loaded via a namespace (and not attached):
     [1] shiny_1.0.5     compiler_3.4.4  magrittr_1.5   
     [4] R6_2.2.2        markdown_0.8    tools_3.4.4    
     [7] yaml_2.1.18     Rcpp_0.12.16    crosstalk_1.0.0
    [10] jsonlite_1.5    digest_0.6.15   xtable_1.8-2   
    [13] httpuv_1.3.6.2  mime_0.5