如何在R中的Leaflet地图上弹出窗口显示多个文本?

3
我使用r中的leaflet包制作了一个交互式地图。我创建了以下示例数据集。其中有两个城市,伦敦和伯明翰。来自伦敦的3条推文和来自伯明翰的2条推文。我想要做的是单击地图上的标记以显示该位置的所有推文。然而,我只能在弹出窗口中显示该位置的第一条推文。
我想要展示的是点击位置处的所有推文。最理想的情况是像表格或推文列表等形式。这只是我编造的一个数据集。我的真实数据集有很多城市,其中一些城市有超过10条推文。有谁知道如何实现吗?非常感谢帮助。
我的代码如下:
library(leaflet)
library(dplyr)
data_map = data.frame(lat=c(51.50735, 51.50735, 51.50735,52.48624,52.48624),
                      lon=c(-0.1277583,-0.1277583,-0.1277583,-1.8904010,-1.8904010),
                      n = c(3,3,3,2,2),
                      location = c('London', 'London', 'London', 'Birmingham', 'Birmingham'),
                      tweet = c('Great', 'I love this', 'like it', 'hate it', 'worst ever'))

m = leaflet(data_map) %>%
       setView(lng = -1.470085  , lat=53.38113,zoom=5) %>% 
       addTiles() %>%
       #addProviderTiles(providers$Stamen.Toner) %>% 
       addCircleMarkers( 
       lng = ~lon, 
       lat = ~lat,
       #popup = ~Location,
       #size=3,
       radius = ~n*3, 
       stroke = T, 
       fillOpacity = 0.5,
       popup=paste(
                   "Address:", data_map$location, "<br>",
                   "number of tweets:", df_map$n, "<br>",
                   "Posts:", data_map$tweet)
       )
print(m)

1
在您的 popup= 中,您可以使用 popup=~paste( 来避免需要指定 data$variable 并只使用变量名。 - Jim
1个回答

1
你可以将数据缩减为每个位置一行,并将每个位置的所有推文保存在列表列中。
library(leaflet)
library(dplyr)
data_map = data.frame(lat=c(51.50735, 52.48624),
                      lon=c(-0.1277583,-1.8904010),
                      n = c(3,2),
                      location = c('London', 'Birmingham'))

data_map$tweets <- list(c('Great', 'I love this', 'like it'), c('hate it', 'worst ever'))

m = leaflet(data_map) %>%
  setView(lng = -1.470085  , lat=53.38113,zoom=5) %>% 
  addTiles() %>%
  #addProviderTiles(providers$Stamen.Toner) %>% 
  addCircleMarkers( 
    lng = ~lon, 
    lat = ~lat,
    #popup = ~Location,
    #size=3,
    radius = ~n*3, 
    stroke = T, 
    fillOpacity = 0.5,
    popup= ~paste(
      "<strong> Address: </strong>", location, "<br>",
      "<strong> number of tweets: </strong>", n, "<br>",
      "<strong> Posts: </strong>", "<br>", lapply(tweets, paste, collapse = "<br>")
    ))

m

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接