在R Leaflet中以某些缩放级别显示图层

时间:2020-04-29 13:45:16

标签: javascript r leaflet gis

我正在使用R包“ leaflet”制作交互式地图。

我想根据缩放级别自动更改可见层。

例如,当放大时,我想让一个多边形层消失,取而代之的是一个点层。像这样的东西:https://tree-map.nycgovparks.org/

我一直在尝试许多不同的技巧,并详细研究了“ leaflet”和“ leaflet.extras”包的帮助,但找不到任何实现方法。

我还从传单中直接找到了一些东西,但是在R下似乎无法复制: Setting zoom level for layers in leaflet

我尝试使用markerOptions中的minZoom和maxZoom选项,但它似乎并没有达到我想要的目的。

这是此示例的代码:


require(spData)
require(leaflet)
require(sf)

# loading shapes of countries from the package spData

data(world)
world <- st_read(system.file("shapes/world.gpkg", package="spData"))

# creating a sf objet with oceanian countries boundaries

oceania <- world[world$continent=="Oceania",]

#loading points events from the quakes dataset

data(quakes)

#Creating a leaflet objet with points and polygons

leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addCircleMarkers(lng=quakes$long,
                   lat=quakes$lat,
                   col="blue",
                   radius=3,
                   stroke=FALSE,
                   fillOpacity = 0.7,
                   options = markerOptions(minZoom=15, maxZoom=20)) %>%
  addPolygons(data= oceania,
              col="red")

它为我提供了来自openstreetmap的具有预期背景的预期图层,但是minZoom和maxZoom参数没有任何改变。我希望点图层仅出现在15到20的缩放级别之间,但似乎无法像这样工作。

Image from the viewer

1 个答案:

答案 0 :(得分:3)

大多数“ addElement()”类型函数中的group参数对于管理地图的工作方式非常重要。我推荐这样做,通过仔细考虑如何对数据进行分组,您可以做很多整洁的事情。

通过调用groupOptions(),您可以为任意图层设置缩放比例。在下面,我添加了您指定的缩放级别,但可以随意调整以适应您的需求。

#Creating a leaflet object with points and polygons

leaflet() %>%
  addProviderTiles(providers$CartoDB.Positron) %>%
  addCircleMarkers(lng=quakes$long,
                   lat=quakes$lat,
                   col="blue",
                   radius=3,
                   stroke=FALSE,
                   fillOpacity = 0.7,
                   #options = markerOptions(minZoom=15, maxZoom=20), # Oldcode
                   group = "Quake Points") %>%                       # Newcode
  addPolygons(data= oceania,
              col="red") %>%                        
  groupOptions("Quake Points", zoomLevels = 15:20)                   # Newcode
相关问题