私は光沢があり、リーフレットを新しくしています。以下のコードは、ベースマップ上にポイントをマップする試みです。それはうまくいくが、反応的ではない。
ポイントは、(CSVからインポートされた)データフレームから取得したもので、マップすることができます。しかし、アプリケーションの上部には、ユーザーが機能を選択できるようにするチェックボックスが作成されています。アイデアは、どの行が順方向に渡されるか、したがってどの点がマップされるかを選択することになります。これは私が苦労しているステップです。コードでは、フィルタリングの出力(チェックボックス入力)からではなく、データフレームから可能なポイントの完全なリストを渡しています。代わりにフィルター処理の結果をどうやって渡すのですか?checkboxGroupInputの後の反応的なマッピング
私のアプローチは、cbind()
のデータフレームを作成するために、座標を持つcolを取得し、これをpoints
に渡します。おそらく、フィルタリングされたデータから関連する列を直接渡すことができます。ありがとうございました。
library(shiny)
library(leaflet)
library(dplyr)
parks <- read.csv("data.csv")
r_colors <- rgb(t(col2rgb(colors())/255))
names(r_colors) <- colors()
ui <- fluidPage(
# First row for selectInputs
fluidRow(
column(4,
checkboxGroupInput(inputId = "d_Governorate",
label = "Governorate:",
choices = c("All",
unique(as.character(parks$Governorate))),
selected = "All"
)
),
leafletOutput("d_map")
)
)
server <- function(input, output, session) {
points <- reactive({
validate(
need(input$d_Governorate != "", 'Please choose at least one feature.')
)
temp <- select(parks, lon, lat)
if (input$d_Governorate != "All") {
temp <- filter(parks, Governorate %in% input$d_Governorate) %>%
select(lon, lat)
}
temp
}),
output$d_map <- renderLeaflet({
leaflet() %>%
addProviderTiles("Stamen.TonerLite",
options = providerTileOptions(noWrap = TRUE)
) %>%
addMarkers(data = points())
})
}
shinyApp(ui, server)
DATA:UIで
points <- reactive({
validate(
need(input$d_Governorate != "", 'Please choose at least one feature.')
)
temp <- select(parks, lon, lat)
if (input$d_Governorate != "All") {
temp <- filter(parks, Governorate %in% input$d_Governorate) %>%
select(lon, lat)
}
temp
})
: https://www.dropbox.com/s/3nq07fbyurur8ec/data.csv?dl=0
私のラップトップでコードに投稿できますか? –
ありがとう@Valter。私が提案したコードを追加しました。何が働いているかは、すべてのユーザー入力をリフレッシュすることです。しかし、それは常にすべての点をマップします。つまり、フィルタリングは機能していません。私はtempをポイントに渡そうとしました: 'points < - temp'、あなたの最後のステートメント' temp'を置き換えましたが、無駄です。 – jpinelo
@jpinelo私はコードをチェックして、それはうまく見えます。私はここにアプリを配備しました:[app](https://altervalter.shinyapps.io/q11app/)マップの下にある表を見て、地図上のどの点がマークされているかを確認してください。 –