2017-12-13 30 views
1

私は、RStudioを使用してチョコレートリーフレットマップを作成しています。 私はRにインポートしたシェイプファイルの属性としてCountryとUrlを持っています。リーフレットポップアップをカスタマイズするR

最後のマップのポップアップ内に国名とURLをハイパーリンクとして表示します。以下は

は、私がこれまで使用しているコードです:

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) 
) 

が、私はテキストを参照してください「こちらをクリック」したいの代わりに、ポップアップでURL全体、私は運に以下のコードを使用してみました。

popup = ~ paste("Country:", counry, "<br/>","<b/>","URL:", "<b><a href=url>Click Here</a></b>") 

これを達成するためのアイデアはありますか?私は、世界各国のためのシェープファイルをダウンロードするWorld Borders Data Setを使用

# 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>" 
       ) 

再現例

答えて

0

概要

R, leaflet package, Passing a character vector of HTML tags to popups?を読んだ後、ここにあなたがあなたの既存のコードを変更する方法をです。次に、データセット内の各国のURLにWikipediaを追加します。

SS of Leaflet Map w/popup to Wiki

# 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 # 
関連する問題