R Leaflet Label Установить направление - PullRequest
0 голосов
/ 14 марта 2019

Пожалуйста, посмотрите на приведенный ниже пример кода, я хотел бы использовать направление метки (MyDirection), которое хранится в df, чтобы иметь разные направления меток на моей карте.

Я могу установить для каждой метки определенное направление, например direction = "top", но, если я укажу direction = ~MyDirection.

* 1007, каким-то образом оно не будет работать.

Заранее спасибо.

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 ]

1 голос
/ 20 марта 2019

Я хотел бы поделиться своим последним подходом.Наконец мне удалось установить направление метки на основе mydf $ MyDirection.Вместо добавления нескольких слоев, как я делал в предыдущем примере, я использовал библиотеку «Purrr».Это значительно уменьшает количество слоев.

С наилучшими пожеланиями

#Libraries----
library(leaflet)
library(htmltools)
library(htmlwidgets)
library(purrr)
#---Data Input----
mydf  <- read.csv(textConnection("
Facility,Lat,Long,MyDirection
ANN,51.19,4.46277778,right
BAB,43.26306,-2.94972222,left
BCN,41.29694,2.07833333,top
BCN2,41.29694,2.07833333,bottom
"))

#---Create Vector----
ob_Facility <- mydf %>% 
  split(., .$Facility)
#---Create Map----
m <- leaflet() %>% 
  addTiles() 

#---Purrr Layers----
names(ob_Facility) %>%
  purrr::walk(function(mydf) {
    m <<- m %>%
      addCircleMarkers(data=ob_Facility[[mydf]],
                       lng=~Long, lat=~Lat,
                       group = "Show All",
                       label = ~Facility,
                       labelOptions = labelOptions(noHide = T,direction = ~MyDirection))
  })

#---Layers control----
m %>%
  addLayersControl(
    overlayGroups = "Show All",
    options = layersControlOptions(collapsed = FALSE)  
  )%>%
  #---Save as HTML File----
saveWidget('Example Go Live Date.html', selfcontained = TRUE)
1 голос
/ 18 марта 2019

Здравствуйте,

Я нашел обходной путь с 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
...