R具有多个图层的交互式地图

时间:2016-05-04 03:31:47

标签: r leaflet googlevis rmaps

我正在尝试创建一个美国各州的地图,比较两个变量,随着时间的推移。我想以网络为基础,互动。我成功完成了R,传单和Shiny的结合。但是,它真的很慢:

datadrivers.shinyapps.io/opioid_map/

我按照R小册子说明使用leafletProxy来更新我感兴趣的图层,而不是重绘整个地图。我也试图限制地图边界,希望它不必渲染尽可能多的数据。滑块移动时仍需要4-5秒才能更新。那太慢了。

我通过rMaps和googleVis查看了其他一些不错的网页地图,但据我所知,他们一次只允许一个地图图层 - 我需要提供两个变量。例如,使用googleVis,我可以使用gvisGeoChart将 标记或多边形放置,但不能同时放在同一个地图上。

我的最后一个选择是简单地在maptools之类的东西中创建一个静态地图,我认为它会更快,但它们不是交互式的,所以如果可能的话我宁愿避开这条路线。

我很感激任何有关优化进一步传单的指导,或利用另一个允许我覆盖多个变量的包(我可能不完全了解如何以这种方式利用rMaps或googleVis)。

仅供参考,这是我的Shiny应用程序的服务器代码。不幸的是,我不能给你这个数据:

server <- function(input, output, session) {
  output$mymap<-renderLeaflet({
    pal <- colorNumeric(
      palette = "Blues",
      domain = us_state@data$death_rate_2014
    )
    leaflet(us_state) %>% addTiles() %>%
      setView(lng = -96, lat = 38, zoom = 3) %>%
      addLegend(position = "topright",
                pal = pal, values = ~death_rate_2014,
                title = "Deaths by Drug Poisoning, per 100,000",
                opacity = 1) %>%
      setMaxBounds(-72, 40, -70, 43)

  })
  observe({
    pal <- colorNumeric(
      palette = "Blues",
      domain = get(paste0("death_rate_",input$timeSlider),us_state@data)
    )
      leafletProxy("mymap",data=us_state) %>%
      #clearShapes %>% #Commented this step out-clearing the map each time adds a step and confuses the user
      addPolygons(stroke=FALSE,smoothFactor=.2,fillOpacity=.5,
                  color=~pal(get(paste0("death_rate_",input$timeSlider),us_state@data)),
                  popup=~get(paste0("death_rate_",input$timeSlider),us_state@data)) %>%
      addCircles(data=state.centroids2,lat=~Y,lng=~X,
                 radius=~get(paste0("kids_rate_",input$timeSlider),state.centroids2)*250,
                 weight=1,color="red",popup=
                   paste("Foster Care Caseload:",
                         as.character(round(get(paste0("kids_rate_",input$timeSlider),state.centroids2))),
                         "per 100,000"))
  })
}

0 个答案:

没有答案