javascript - 在 R Leaflet 中以特定缩放级别显示图层

标签 javascript r leaflet gis

我正在使用 R 包“传单”制作交互式 map 。

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

例如,我想让一个多边形图层在放大时消失,取而代之的是一个点图层。像这样的东西: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

最佳答案

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

调用 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

关于javascript - 在 R Leaflet 中以特定缩放级别显示图层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61503281/

相关文章:

javascript - 为什么 getElementsByClassName 不适用于 xhr reponseXML

javascript - 如何将额外的属性添加到 bootstrapTable 中

r - 连接到 R 中的 Azure 表存储

javascript - leaflet - 从两个中线点计算矩形坐标

javascript - d3 : Text displayed when clicked on leaflet map

javascript - 如何防止出错时调用异步回调

javascript - 如何将前景图像放在 java 脚本 slider 容器上?

r - 如何合并数据框中具有相同前缀的行?

r - 子类化包含名称为 : access by name 的列表的 S4 类

javascript - 在传单上使用自定义 map 投影