R传单标签设置方向

时间:2019-03-14 10:02:23

标签: r leaflet label r-leaflet

请查看以下示例代码,我想使用标签方向(MyDirection),该方向存储在df中,以在地图中具有不同的标签方向。

我可以将每个标签设置为特定的方向,例如direction = "top",但是如果我指定direction = ~MyDirection,则不知何故。

任何想法/解决方案将不胜感激。

谢谢。

library(leaflet)

df  <- read.csv(textConnection("
Name,Lat,Long,MyDirection
ANN,51.19,4.46277778,right
BAB,43.26306,-2.94972222,left
BCN,41.29694,2.07833333,top
BCN,41.29694,2.07833333,bottom
"))

#---Create Map----
m <- leaflet(df) %>% 
     addTiles(group = "OSM (default)") %>%
     addCircles(~Long, ~Lat,
                 label = ~htmlEscape(Name), 
                 labelOptions = labelOptions(noHide = T, 
                                              #direction = "top",
                                              #direction = "bottom",
                                              #direction = "left",
                                              #direction = "right",
                                              direction = ~MyDirection))

m

2 个答案:

答案 0 :(得分:1)

你好

我想出了一种解决方法,该方法具有4层(顶部,底部,左侧,右侧),并将相同的组名称附加到每一层。

library(leaflet)


df  <- read.csv(textConnection("
Name,Lat,Long,MyDirection
ANN,51.19,4.46277778,right
BAB,43.26306,-2.94972222,left
BCN,41.29694,2.07833333,top
BCN,41.29694,2.07833333,bottom
"))


#---Create 4 additional DFs (1 for each dirction)----
dfLeft = df[df$MyDirection == "left", ]
dfRight = df[df$MyDirection == "right", ]
dfTop = df[df$MyDirection == "top", ]
dfBottom = df[df$MyDirection == "bottom", ]

#---Create Map----
m <- leaflet(df) %>% 
  addTiles(group = "OSM (default)") %>%

  addCircles(~dfLeft$Long, ~dfLeft$Lat, color = '#d40511',
             label = ~htmlEscape(dfLeft$Name), 
             labelOptions = labelOptions(noHide = T, 
                                         direction =  "left"),
             group = "Show All")%>%

  addCircles(~dfRight$Long, ~dfRight$Lat, color = '#d40511',
             label = ~htmlEscape(dfRight$Name), 
             labelOptions = labelOptions(noHide = T, 
                                         direction =  "right"),
             group = "Show All")%>%

  addCircles(~dfTop$Long, ~dfTop$Lat, color = '#d40511',
             label = ~htmlEscape(dfTop$Name), 
             labelOptions = labelOptions(noHide = T, direction = "top",
                                         offset = c(0, -2)),
             group = "Show All")%>%

  addCircles(~dfBottom$Long, ~dfBottom$Lat, color = '#d40511',
             label = ~htmlEscape(dfBottom$Name), 
             labelOptions = labelOptions(noHide = T, direction = "bottom",
                                         offset = c(0, 2)),
             group = "Show All")

m

答案 1 :(得分:0)

我想分享一下我的最新方法。我终于设法根据mydf $ MyDirection设置标签方向。我没有像上一个示例那样添加多层,而是使用了库“ Purrr”。这极大地减少了层数。

最好的问候

foreach ($decoded['addresses'] as $addresseschunk){ 
             foreach ($decoded['addresses'] as $addresseschunk){