1
Shinyの小さなアプリを作っています。これは、国や地域向けのデータを保持しており、ユーザーは地域を選択できます。次に、アイデアは、私がアプリで持っているリーフレットマップがズームインし、選択した地域に焦点を当てるということです(ユーザーが「ヨーロッパ」をクリックし、ヨーロッパで地図がズームインする)。リーフレットの境界をsfカラムで調整する
単純な機能geometry
の列をリーフレットのフィルタとして使用する方法についてはわかりません。ここには単純な例があります(シャイニーではありませんが、問題はシャイニー関連ではありません)。
library(rnaturalearth)
library(dplyr)
library(leaflet)
# sf data:
earth <- ne_countries(returnclass = "sf") %>%
select(Region = region_un, geometry)
# little dataset:
df <- data_frame(
Region = c("Europe", "Africa", "Asia", "Oceania", "Americas"),
Score = c(0.85, 0.77, 0.81, 0.93, 0.79)
)
# join:
df <- full_join(df, earth)
# simulate what I'm doing in Shiny:
input <- list()
input$region <- "Europe"
df2 <- filter(df, Region == input$region)
leaflet(df2) %>% addTiles()
これが生成します。私はdf
(フィルタリングされていないデータフレーム)を使用した場合と同じである
を。どのように私はこれについて行くことができるかについての任意のアイデア?私はShiny/leafletの文書でそれを見つけることができませんでした。
我々が関心の我々の地域に集中するleaflet::setView()
を使用し、その後平均緯度と経度を取得し、
df2$geometry
から値を抽出するために
sf::st_coordinates
を使用することができ
完璧に動作します、ありがとうございます!私は 'st_coordinates()'関数を知らなかったので、非常に便利です。 – RobertMc