如何解决如何将长文本字符串包装在tmap HTML多边形弹出窗口或固定宽度中? tmap可以识别换行符吗?
我在R中使用tmap
包(v。3.0,我也尝试了v。3.2)来制作HTML映射。我有一个数字和字符文本字段的空间多边形。在我的一些文本字段中,我有一个项目列表,这些列表用分号(;)分隔。对于其中的某些多边形,文本字符串是如此之长,以至于弹出窗口可能比HTML窗口宽。我必须缩小地图才能看到这些弹出窗口的内容。
我试图在这些文本字符串中加入断点,以便在该数据字段中为弹出窗口添加新行,但是tmap
无法识别它们。 \n
之类的中断不会在弹出窗口中创建新行。
下面是一个示例,尝试向称为long_names
的列及其输出添加不同类型的中断:
# install latest version of `tmap` and `tmaptools`
# library(remotes)
# install_github("mtennekes/tmaptools")
# install_github("mtennekes/tmap")
# load libraries
library(sf)
library(raster)
library(spData)
library(tmaptools)
library(tmap)
# use spData dataset called nz
# add example row with long list of names
nz$long_names <- 'long name 1; long name 2; long name 3; long name 4; long name 5'
# try to make multiple lines in string for the popups
# try different codes for breaks
nz$long_names_n <- gsub("; ","\n",nz$long_names)
nz$long_names_r <- gsub("; ","\r",nz$long_names)
nz$long_names_br1 <- gsub("; ","<br/>",nz$long_names)
nz$long_names_br2 <- gsub("; ","<br>",nz$long_names)
# change tmap to view mode
tmap_mode("view")
# plot interactive map
tm_shape(nz) +
tm_fill()
输出屏幕截图:long string in HTML popup and it doesn't wrap
在我的真实数据集中,long_names
中列出的项目数量不同,因此,我希望弹出窗口的长度不同(并且向上滚动和向下滚动很好),但宽度相似。
我还尝试将tmap_leaflet()
与popupOptions()
配合使用来调整最大弹出窗口宽度,但是它忽略了它,并给了我与以前相同的地图:
# interactive map
map1 <- tm_shape(nz) +
tm_fill()
# convert to leaflet object
lf <- tmap_leaflet(map1)
# assign minimum and maximum width to popup options
lf <- lf %>% leaflet::popupOptions(minWidth = 50,maxWidth = 50)
# view leaflet version
lf
输出:
$maxWidth [1] 50 $minWidth [1] 50 $maxHeight $autopan [1] TRUE $keepInView [1] FALSE $closeButton [1] TRUE $className [1] ""
屏幕截图:same result as before with popup being too wide
我也尝试过popup.format = list()
,但是我认为它不起作用,因为数据不是数字的(请参见popup.format
下的here)。如果我错了,请纠正我。在同一链接的legend.format
下,它说我可以放入函数,但是我不知道如何使这些用分号分隔的字符串起作用。
# plot interactive map
tm_shape(nz) +
tm_fill(popup.format = list(long_names=list(maxWidth=50)))
错误:
格式C(x = c(12500.5611491,4941.5725565,23900.0363831,12071.1446886,:未使用的参数(maxWidth = 50)
我的关键问题:
- 是否可以使用
tmap
将文本包装在弹出窗口中,或者让tmap
识别字符串中的新换行符? - 如果没有,如何使用
tm_leaflet()
和leaflet
来修改tmap
弹出选项?我的实际数据集在多边形内有30个字段,而有6个数据字段存在此问题-包括每个列表中不同数量的项目-因此,我想这样做而不必尽可能地单独输入所有30个数据字段(请参阅here)。 - 或者,是否可以在弹出窗口中包含从左到右的滚动条?
非常感谢您的帮助!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。