Customizing leaflet popup in R(在 R 中自定义传单弹出窗口)
问题描述
我正在使用 RStudio 创建一个等值线传单地图.我在导入到 R 的 shapefile 中有 Country 和 Url 作为属性.
我希望在最终地图的弹出窗口中将国家名称和 URL 显示为超链接.
以下是我目前使用的代码:
m <- world_shapefiles %>%传单() %>%addProviderTiles(providers$Esri.WorldStreetMap) %>%添加多边形(标签=〜国家,labelOptions = labelOptions(style = list("font-weight" = "normal", padding = "3px 8px", textsize = "15px",方向=自动")),popup = ~ paste("国家:", 国家, "<br/>","<b/>","URL:", url))我想在弹出窗口中看到文本单击此处"而不是整个 url,我尝试使用以下代码但没有成功.
popup = ~ paste("Country:", counry, "<br/>","<b/>","URL:", "<b><a href=url>点击这里</a></b>")有什么想法可以实现吗?
概览
看完
# 加载必要的包图书馆(传单)图书馆(SF)# 下载压缩文件下载文件(url = "http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip", destfile = "TM_WORLD_BORDERS-0.3.zip")# 解压解压缩(zipfile =TM_WORLD_BORDERS-0.3.zip")# 转换为 sf世界.边界 <-read_sf(dsn = getwd(),层=TM_WORLD_BORDERS-0.3")# 添加每个国家的维基百科页面world.borders$wiki <-paste0("https://en.wikipedia.org/wiki/", world.borders$NAME)# 制作传单地图我的.map <-传单(选项=传单选项(minZoom = 2))%>%setMaxBounds(lng1 = -180, lat1 = -89.98155760646617, lng2 = 180, lat2 = 89.99346179538875 ) %>%addTiles(urlTemplate = "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}")%>%addPolygons(数据 = world.borders, 填充 = "#D24618", 颜色 = "#D24618", 不透明度 = 0.5, 填充不透明度 = 0.01, 重量 = 3, 弹出 = paste0(<b>国家:</b>", world.borders$NAME, "<br>", "I am using RStudio to create a choropleth leaflet map. I have Country and Url as an attribute in the shapefile that I imported to R.
I wish to show the Country name and URL as a hyperlink within the popup of the final map.
Below is the code I have used so far:
m <- world_shapefiles %>%
  leaflet() %>%
  addProviderTiles(providers$Esri.WorldStreetMap) %>%      
  addPolygons( 
      label=~country, 
            labelOptions = labelOptions(style = list("font-weight" = "normal", padding = "3px 8px", textsize = "15px",
direction = "auto")), 
              popup = ~ paste("Country:", country, "<br/>","<b/>","URL:", url)
)
I want to see the text "Click here" instead of the entire url in the popup, I tried using the below code with no luck.
popup = ~ paste("Country:", counry, "<br/>","<b/>","URL:", "<b><a href=url>Click Here</a></b>")
Any ideas to achieve it?
Overview
After reading R, leaflet package, Passing a character vector of HTML tags to popups?, here's how you would modify your existing code:
# it seems ~ doesn't work inside of the paste0() function
# which is why I accessed the variables through the $
popup = paste0( "Country:"
                 , world_shapefiles$country 
                 , "<br>"
                 , "<a href='"
                 , world_shapefiles$url
                 , "' target='_blank'>"
                 , "Click Here</a>"
               )
Reproducible Example
I use the World Borders Data Set to download shapefiles for each country in the world. I then add a Wikipedia URL for each country in the data set.
# load necessary packages
library( leaflet )
library( sf )
# download zip file
download.file(
  url = "http://thematicmapping.org/downloads/TM_WORLD_BORDERS-0.3.zip"
  , destfile = "TM_WORLD_BORDERS-0.3.zip"
)
# unzip 
unzip( zipfile = "TM_WORLD_BORDERS-0.3.zip" )
# transfrom to sf
world.borders <-
  read_sf( dsn = getwd()
           , layer = "TM_WORLD_BORDERS-0.3" )
# add the wikipedia page for each country
world.borders$wiki <-
  paste0( "https://en.wikipedia.org/wiki/", world.borders$NAME )
# make leaflet map
my.map <-
  leaflet( options = leafletOptions( minZoom = 2 ) ) %>%
  setMaxBounds( lng1 = -180
                , lat1 = -89.98155760646617
                , lng2 = 180
                , lat2 = 89.99346179538875 ) %>%
  addTiles( urlTemplate = "https://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer/tile/{z}/{y}/{x}" ) %>%
  addPolygons( data = world.borders
               , fill = "#D24618"
               , color = "#D24618"
               , opacity = 0.5
               , fillOpacity = 0.01
               , weight = 3
               , popup = paste0(
                 "<b>Country: </b>"
                 , world.borders$NAME
                 , "<br>"
                 , "<a href='"
                 , world.borders$wiki
                 , "' target='_blank'>"
                 , "Click Here to View Wiki</a>"
               )
               , label = ~NAME
               , labelOptions = labelOptions(
                 style = list("font-weight" = "normal"
                              , padding = "3px 8px"
                              , textsize = "15px"
                              , direction = "auto" ) )
               , highlightOptions = highlightOptions( 
                 color = "#10539A"
                 , weight = 3
                 , fillColor = NA
               ))
# display map
my.map
# end of script #
这篇关于在 R 中自定义传单弹出窗口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在 R 中自定义传单弹出窗口
 
				
         
 
            
        - CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- Fetch API 如何获取响应体? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01
 
						 
						 
						 
						 
						