首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用htmltools在小叶地图中创建标注会生成微小标注

使用htmltools在小叶地图中创建标注会生成微小标注
EN

Stack Overflow用户
提问于 2019-04-27 13:42:37
回答 1查看 356关注 0票数 0

创建一个树叶地图。第一步,指定标签。leaflet github上使用的代码将

代码语言:javascript
复制
%>% lapply(htmltool::HTML) 

在sprintf()函数之后。但是,将标签创建为type:"list“会导致错误:"Error in sum(sapply( label,function(x) {:invalid 'type‘(list) of argument”

所以为了解决这个问题,我只需要加载htmltools库并使用下面的代码

代码语言:javascript
复制
HTML(sprintf(...)) 

这样做可以工作并运行地图,但是,标签显示为没有任何信息的小方框(参见下面的图片链接)

我不知道这是与sprintf()中的代码有关,还是与HTML()有关。

奇怪的是,%>% lapply方法工作得很好,但是发生了一些事情,现在出现了上面提到的错误

Image with the small label shown as little white box

代码语言:javascript
复制
labels.dest2 <- sprintf("<div style = 'overflow-wrap: anywhere;'><strong>%s <br/>%s Destinations</div><br/>%s Euclidean Miles from LAX on average<br/>%s minutes between OD tweets </div><br/>%s Miles from LAX on average</div><br/>%s minutes from LAX on average</div>",
                  puma.spdf$NAME,
                  puma.spdf$Dest_pt_count,
                  puma.spdf$Avg_Euc_Dist_Mi,
                  puma.spdf$Avg_tweetTime,
                  puma.spdf$Avg_RtDist_Mi,
                  puma.spdf$Avg_RtTime_min) %>% lapply(htmltools::HTML)

leaflet() %>% addTiles() %>% etc...

完整的代码在这里

代码语言:javascript
复制
## Map with OD data and travel stats  ##

labels.dest2 <- HTML(sprintf("<div style = 'overflow-wrap: anywhere;'> <strong>%s <br/>%g Destinations</div><br/>%s Euclidean Miles from LAX on average<br/>%s minutes between OD tweets </div><br/>%s Miles from LAX on average</div><br/>%s minutes from LAX on average</div>",
                  puma.spdf$NAME,
                  puma.spdf$Dest_pt_count,
                  puma.spdf$Avg_Euc_Dist_Mi,
                  puma.spdf$Avg_tweetTime,
                  puma.spdf$Avg_RtDist_Mi,
                  puma.spdf$Avg_RtTime_min))

leaflet() %>% addTiles() %>% 
  setView(lng=-118.243683, lat=34.1, zoom  = 9.35) %>%
  addEasyButton(easyButton(
    icon="fa-crosshairs", title = "Default View", 
    onClick=JS("function(btn, map) {var groupLayer = map.layerManager.getLayerGroup('Destinations (red)'); map.fitBounds(groupLayer.getBounds());}")))  %>%
  addProviderTiles(providers$CartoDB.Positron, 
                   group = "Grey") %>%
  addProviderTiles(providers$OpenStreetMap.BlackAndWhite, 
                   group = "OSM")  %>%

  # Add Polygons
  # Destination data
    addPolygons(data = puma.spdf,
              group = "Destination Density",
              fillColor = ~pal.dest(Dest_pt_count),
              weight = 1,
              opacity = 90,
              color = "white",
              dashArray = "3",
              fillOpacity = 0.5,
              highlight = highlightOptions(weight = 2,
                                           color = "#666",
                                           dashArray = "",
                                           fillOpacity = 0.7,
                                           bringToFront = TRUE,
                                           sendToBack = TRUE),
              label = labels.dest2,
              labelOptions = labelOptions(style = list("font-weight" = "normal", padding = "3px 8px"),
                                          textsize = "15px",
                                          direction = "auto")) %>%
  addLegend(values=puma.spdf$Dest_pt_count,
            group = "Destination Density",
            pal=pal.dest,
            title="Destination Density (Dest per PUMA)", 
            position = "bottomright") %>%

   # Add Points
  addCircleMarkers(data = D.spdf, 
                   radius = 2,
                   color = "red",
                   group = "Destinations (red)",
                   fillOpacity = 0.5) %>%
  addCircleMarkers(data = O.spdf, 
                   radius = 2,
                   color = "green",
                   group = "Origins (green)") %>%

  # Add Layer Controls
  addLayersControl(
    baseGroups = c("OSM (default)", "Grey"),
    overlayGroups = c("Destinations (red)", "Origins (green)","Destination Density"),
    options = layersControlOptions(collapsed = FALSE)
  )
EN

回答 1

Stack Overflow用户

发布于 2019-04-28 05:41:28

问题是第一列puma.spdf$NAME不是dataset的一部分,它抛出了字符串。检查以确保要显示的所有变量实际上都是数据集的一部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55877635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档