2016-04-24 5 views
1

Was ich tun möchte, ist ziemlich einfach: Ich möchte die Größe der Kreise konstant halten, wie der Benutzer heran- oder herauszoomen.Stellen Sie Kreise Radius reagieren auf Zoom-Ebene

library(shiny) 
library(leaflet) 

r_colors <- rgb(t(col2rgb(colors())/255)) 
names(r_colors) <- colors() 

ui <- fluidPage(
    leafletOutput("mymap"), 
    p(), 
    actionButton("recalc", "New points") 
) 

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

    output$mymap <- renderLeaflet({ 
    leaflet() %>% 
     addProviderTiles("Stamen.TonerLite", 
         options = providerTileOptions(noWrap = TRUE)) 
    }) 

    observe({ 
    new_zoom <- input$mymap_zoom 
    leafletProxy('mymap') %>% 
     clearShapes() %>% 
     addCircles(data = data.frame(lon = 0, lat = 0), 
       radius = 100000/new_zoom) 
    }) 
} 

shinyApp(ui, server) 

Ich habe diesen Code versucht, aber ich kann wirklich nicht die Ergebnisse erklären. Was passiert, ist, dass jedes Mal, wenn ich hinein- oder herauszoomen werde, das Leaflet einen Kreis hinzufügt.

Warum? Sollte nicht ClearShapes() darauf aufpassen? Gibt es auch einen einfachen Weg, um zu bekommen, was ich will?

Antwort

1

In diesem Fall denke ich, you'de bessere Nutzung circlemarkers:

Kreis Marker viel ist wie normale Kreise (siehe Linien und Formen), mit der Ausnahme, dass ihr Radius in der Online-Pixel unabhängig von Zoomstufe konstant bleibt.

https://rstudio.github.io/leaflet/markers.html

Verwandte Themen