2017-03-08 3 views
0

Je n'arrive pas à ajouter plusieurs couches dans mon application. Je veux ajouter un groupe de polygones avec un groupe de marqueurs de cercle avec un groupe d'icônes arbitraires (.png). J'ai le groupe de fichiers geojson qui sont ajoutés dans une boucle for qui est enveloppée dans une instruction observer ({}) avec la fonction map $ addGeoJSON (x) où x est une entité avec des coordonnées. L'objet « carte » est créée par la commandeAjout de plusieurs couches à la carte de brochure dans Shiny in R

map <- createLeafletMap(session, 'map') 

Ceci est bien beau, et les polygones sont ajoutés bien. Je veux aussi m'engager dans cette façon d'ajouter les polygones. Cela ne devrait pas devoir changer.

L'erreur se produit lorsque j'essaie d'ajouter des marqueurs sur cet objet de la même manière (par exemple avec map $ addMarkers (....)) Voici l'erreur et le code de l'application qui tente d'ajouter des marqueurs la manière désirée et échoue. L'application brillante ci-dessous avec les données de mon erreur tremblements recrée

"Listening on ... 
Warning: Error in observerFunc: attempt to apply non-function 
Stack trace (innermost first): 
    56: observerFunc [C:/Users/jbz/Desktop/leaflet-map-question.R#35] 
    1: runApp 
ERROR: [on_request_read] connection reset by peer" 

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

ui <- bootstrapPage(
    tags$style(type = "text/css", "html, body {width:100%;height:100%}"), 
    leafletMap("map", width = "100%", height = "100%", 
      options=list(center = c(40.736, -73.99), zoom = 14)), 
    absolutePanel(top = 10, right = 10, 
       sliderInput("range", "Magnitudes", min(quakes$mag), max(quakes$mag), 
          value = range(quakes$mag), step = 0.1 
       ), 
       selectInput("colors", "Color Scheme", 
          rownames(subset(brewer.pal.info, category %in% c("seq", "div"))) 
       ), 
       checkboxInput("legend", "Show legend", TRUE) 
) 
) 

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

    filteredData <- reactive({ 
    quakes[quakes$mag >= input$range[1] & quakes$mag <= input$range[2],] 
    }) 

    colorpal <- reactive({ 
    colorNumeric(input$colors, quakes$mag) 
    }) 


    map <- createLeafletMap(session, 'map') 

    observe({ 
    df <- filteredData() 
    map$addMarkers(
     lng=df$Lon, lat=df$Lat, popup = paste(as.character(df$mag))) 
    }) 
} 

shinyApp(ui, server) 

(Comment) puis-je ajouter des marqueurs correctement tout en insistant sur l'utilisation de la fonction createLeafletMap()?

map <- createLeafletMap(session, 'map') 
+0

peut également vous fournir votre fonction 'createLeafletMap()' aussi? – SymbolixAU

+0

'createLeafletMap' est obsolète – HubertL

+0

erreur de cas:' lng = df $ lon, lat = df $ lat' – HubertL

Répondre

0

essayer:

library(dplyr) 
df <- filteredData() 
leafletProxy("map") %>% 
addMarkers(df, lng = ~Lon, lat = ~Lat, popup = paste(as.character(df$mag)) 

sous observe

+0

OP déclare: "(Comment) puis-je ajouter des marqueurs correctement en insistant sur l'utilisation de la fonction createLeafletMap()? " - Est-ce votre réponse: Non? – HubertL

+0

La carte est toujours créée en utilisant 'createLeafletMap()'. 'renderLeaflet' serait différent. –

+0

Avertissement: Erreur dans UseMethod: aucune méthode applicable pour 'métaData' appliquée à un objet de classe "NULL" – HubertL