Редактирование значений по умолчанию (всплывающих окон и листов) tmap / leaflet / блестящий - PullRequest
0 голосов
/ 12 июня 2019

Я создаю интерактивную карту Страны Басков (в Испании), используя tmap, листовку и блеск.Мне удалось создать карту, но я не могу редактировать поведение по умолчанию для renderLeaflet, а именно:

  1. Я хотел бы редактировать стандартные ярлыки и всплывающие окна.В идеале я бы не хотел всплывающие окна (при нажатии), только надписи (при наведении мыши);ярлык будет содержать информацию, отображаемую в данный момент во всплывающем окне, плюс некоторую дополнительную информацию, и появится в верхнем правом углу карты, а не в области (что-то вроде этого https://leafletjs.com/examples/choropleth/)

  2. нравится удалять листовки листовок, чтобы отображался только Esri.WorldGrayCanvas, и поэтому не должно быть возможности переключаться между листами.

Следующий код показывает, о чем я говорюНеобходимый файл формы можно скачать здесь ftp: //ftp.geo.euskadi.net/cartografia/Limites/ или здесь https://www.dropbox.com/s/zx3bg5131pomyfy/CB_COMARCAS_5000_ETRS89.shp?dl=0

    library(shiny)
library(shinyWidgets)
library(leaflet)
library(rgdal)
library(tmap)
library(tmaptools)
library(dplyr)


setwd(~)

shape <- read_shape(file="CB_COMARCAS_5000_ETRS89.shp") # Load shape file

shape$COMARCA <- as.character(shape$COMARCA)

shape$COMARCA <- c(# Vector with names of the areas
  "Alto Deba", "Arratia-Nervión", "Bajo Bidasoa", "Bajo Deba", "Cantábrica Alavesa",
  "Donostialdea", "Duranguesado", "Encartaciones", "Estribaciones del Gorbea",
  "Gernika-Bermeo", "Goierri", "Gran Bilbao", "Llanada Alavesa", "Markina-Ondarroa", 
  "Montaña Alavesa", "Plentzia-Mungia", "Rioja Alavesa", "Tolosa", "Urola Costa", "Valles Alaveses")

datawvals$COMARCA <- c(# Vector with names of the areas
  "Alto Deba", "Arratia-Nervión", "Bajo Bidasoa", "Bajo Deba", "Cantábrica Alavesa",
  "Donostialdea", "Duranguesado", "Encartaciones", "Estribaciones del Gorbea",
  "Gernika-Bermeo", "Goierri", "Gran Bilbao", "Llanada Alavesa", "Markina-Ondarroa", 
  "Montaña Alavesa", "Plentzia-Mungia", "Rioja Alavesa", "Tolosa", "Urola Costa", "Valles Alaveses")

datawvals <- bind_rows(datawvals, datawvals, datawvals)
datawvals$time <- c(rep("2010",20), rep("2014",20), rep("2016",20))
datawvals$var1 <- runif(60)
datawvals$var2 <- runif(60)
datawvals$var3 <- runif(60)

data4map <- left_join(shape, datawvals, by="COMARCA") #join shape with data to be depicted

years <- c(2010,2014,2016)


runApp(list(
  ui = fluidPage(
    titlePanel("Shiny tmap!"),
    sidebarLayout(
      sidebarPanel(
        selectInput("var", label = "Variable", choices = c("var1", "var2", "var3"), selected = "var1"),
        sliderTextInput(
          inputId = "time", label = "year", 
          choices = years,  selected = 2010, 
          grid = FALSE
        )
      ),
      mainPanel(
        leafletOutput("map", width=600)
      )
    )
  ),
  server = function(input, output) {

    #Subset data based on year
    subsetData <- reactive({
      new_data <- data4map[data4map$time==input$time, ]
      return(new_data)
    })

    #Different color palettes for diff vars
    colores <- reactive({
      if(input$var=="var1"){
        colores0 <- "Blues"
      } else{
        colores0 <- "Reds"
      }

      return(colores0)
    })

    #Actual plot
    output$map = renderLeaflet({

        tm <- tm_shape(subsetData()) +
          tm_polygons(input$var, palette=colores())


      tmap_leaflet(tm)
    })
  }
))

Заранее спасибо за любыесоветы и предложения по редактированию этих значений по умолчанию.

1 Ответ

1 голос
/ 12 июня 2019

Вам нужно использовать tmap? Я думаю, что вы можете получить желаемое поведение только с leaflet - посмотрите руководство здесь: https://rstudio.github.io/leaflet/choropleths.html

Работоспособная структура будет:

output$map <- renderLeaflet({

  leaflet() %>%
    addProviderTiles("ESRI.WorldGrayCanvas") %>%
    addPolygons(data = subset_data(), ...) %>%
    addLegend(position = "topright", ...)    # Using ... here to mean more stuff needed!

})

Затем вы можете изменить цвета фигур, передав аргументы color и fill в addPolygons; Вы можете изменить всплывающие окна и метки с аргументами popup и label соответственно.

В легенде (и для цветов многоугольника) вам необходимо указать цветовую палитру и значения

Все подробности приведены по ссылке выше - это тот же шрифт, что и в предоставленной вами ссылке leafletjs, но вместо этого построено с использованием R.

...