在R

时间:2015-11-04 12:53:44

标签: r leaflet

我在R中使用传单库,我正在创建一个包含以下代码的世界地图:

 leaflet(data = sPDF) %>%

  addProviderTiles("Stamen.Watercolor") %>%
  addPolygons(fillColor = ~pal(sPDF$Colonizer_col), 
              fillOpacity = 0.8, 
              color = "#BDBDC3", 
              weight = 1, 
              popup = state_popup) %>%
  addLegend("bottomright", pal = pal, values = ~na.omit(Colonizer),
            title = "Colony Information",
            labFormat = labelFormat(prefix = ""),
            opacity = 1 ) %>%

  addCircles(data=left, lng = ~LONG, lat = ~LAT, weight = 1,
             radius = ~sqrt(Totals)*300, popup = ~area_popup_left) %>%


  addCircles(data=arrived, lng = ~LONG, lat = ~LAT, weight = 1,
             radius = ~sqrt(Totals)*300, popup = ~area_popup_arrive, fillColor = "Green" )%>%


  setView(lng = -1.5, lat = 53.4, zoom = 2.5)#%>%# set centre and extent of map 

当地图显示在R中时它很好但是当我将它导出到.html文件时,它允许用户缩小太多以至于有三个世界地图副本。 我想设置它,以便最大缩小允许只有一个地图副本作为网页(与R中显示的方式相同)。 我试过了 tileOptions(maxZoom=5) 但是这只会在R中查看地图时影响缩放,而不是在导出到html时。

1 个答案:

答案 0 :(得分:4)

Leaflet的L.Map课程可以选择停止复制地图的叠加层:

  

启用此选项后,地图会跟踪您平移到另一个"复制"世界的并且无缝地跳转到原始世界,以便所有覆盖图如标记和矢量图层仍然可见。

http://leafletjs.com/reference.html#map-worldcopyjump

确保用户不会突破特定区域的正确方法是使用L.Map maxBounds选项:

  

设置此选项后,地图会将视图限制为给定的地理边界,当用户尝试在视图外平移时,会将用户弹回。

http://leafletjs.com/reference.html#map-maxbounds

在代码中:

leafletMap(
    "map", "100%", "100%",
    initialTileLayer = "http://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png",
    initialTileLayerAttribution = HTML('&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors, &copy; <a href="http://cartodb.com/attributions">CartoDB</a>'),
    options=list(
        center = c(0, 0),
        zoom = 0,
        worldCopyJump = FALSE,
        maxBounds = list(
            list(-90, -180),
            list(90, 180)
        )
    )
)

你可以通过在noWrap上设置L.TileLayer选项来实现这一目标,但实际上所做的一切就是停止重复切片,这不是你实际问题的解决方案:

  

如果设置为true,则瓷砖不会在世界宽度(-180到180经度)之外加载而不是重复。

http://leafletjs.com/reference.html#tilelayer-nowrap