1

そのため、以前に計算したいくつかのラスター レイヤーを動的に表示しようとしています。マーカーに表示される値と表示される画像を更新する必要があります。マーカーでは問題なく動作しますが、addRasterImage コマンドでは何もしないようです。何か助けはありますか?コード:

library(shiny)
library(leaflet)
library(RColorBrewer)

#### Mapa en shiny ####
ui <- bootstrapPage(
  tags$style(type = "text/css", "html, body {width:100%;height:100%}"),
  leafletOutput("map", width = "100%", height = "100%"),
  absolutePanel(top = 10, right = 10,
                sliderInput("range", "Fecha", 1, length(arch),
                            value = 1, step = 1
                )
  )
)

server <- function(input, output, session) {

  # Reactive expression for the data subsetted to what the user selected
  # filteredData <- reactive({
  #   a[[input$range]]
  # })

  int.pred<-cropinterp@data@values[!is.na(cropinterp@data@values)]
  pal<-colorNumeric("RdBu", int.pred)
  pal2<- pal<-colorNumeric("Spectral", (int.pred))

  neess<- seq(1,1000,1)
  qpal <- colorBin(terrain.colors(4), domain=neess, bins=c(1,10,100,1000,Inf))

  output$map <- renderLeaflet({
    # Use leaflet() here, and only include aspects of the map that
    # won't need to change dynamically (at least, not unless the
    # entire map is being torn down and recreated).
    leaflet() %>% 
      addTiles(group="OSM (default)") %>%
      setView(lng=-3.77 , lat =40.36, zoom=6) %>%
      addMeasure()%>%
      addRasterImage(rr, colors="Spectral", opacity = 0.7, group ="Krige de Precios") %>%
      addRasterImage(cropinterp, colors="Spectral", opacity = 0.7, group = "Spline de Precios") %>%
      addPolylines(data = cropcont, fillOpacity=0.5, fillColor = "transparent",opacity = 0.7,weight = 2, group = "Contorno Precios") %>%
      addLayersControl(
        baseGroups = c("OSM (default)"),
        overlayGroups = c("Contorno Precios", "Spline de Precios", "Krige de Precios","Spline Madrid"),
        options = layersControlOptions(collapsed = FALSE),
        position="topleft") %>%
      addLegend("bottomright", pal=pal2, values=int.pred, title = "Precio", opacity = 1)%>%
      addLegend(pal = qpal, values = neess, opacity = 1, position="bottomleft")

  })
  # Incremental changes to the map (in this case, replacing the
  # circles when a new color is chosen) should be performed in
  # an observer. Each independent set of things that can change
  # should be managed in its own observer.
  observeEvent(input$range, {
    nn<- input$range
      leafletProxy("map", session)%>%
      clearMarkers()%>%
      clearMarkerClusters()%>%
      addCircleMarkers(lat = timeline$Latitud, lng = timeline$Longitud..WGS84., fillColor = pal,
                       label = paste(as.character(timeline$Rótulo), timeline[,nn+9]),
                       labelOptions = labelOptions(opacity = 0.9,noHide = T), 
                      clusterOptions = markerClusterOptions(), group = "OSM (default)")
  })

  observe({
    na<- input$range
    leafletProxy("map", session)%>%
      addRasterImage(a[[na]], opacity = 0.7)
  })
}

shinyApp(ui, server)

どうやらコードはこのビットに反応しません:

observe({
        na<- input$range
        leafletProxy("map", session)%>%
          addRasterImage(a[[na]], opacity = 0.7)
      })
4

1 に答える 1

3

問題が解決しました:

多くの掘り下げの後、私はこの問題への答えをここで見つけました

問題は、ラスター イメージがタイルのにレンダリングされることでした (なぜそうなったのかはわかりませんが、これは本当に厄介なことでした)。リンクされた質問で提供された回答で、ユーザーはタイルを削除し、入力が変更されるたびに動的に追加することで解決します。

tiles <- c("Hydda.Base",
           "Hydda.Full",
           "Esri.WorldImagery",
           "Esri.WorldTopoMap")

  observe({
    filtdata <- filteredData()
    selectedTiles <- input$tiles
    leafletProxy("map", session)%>%
      clearTiles() %>%
      addProviderTiles(selectedTiles, providerTileOptions(zIndex=-10, continuousWorld=FALSE), group="base")%>%
      clearImages() %>%
      addRasterImage(filtdata, colors="Spectral", project=FALSE, opacity = 0.7, group = "Spline Madrid")
  })
于 2017-05-30T13:00:08.847 に答える