在 R Leaflet 中以特定缩放级别显示图层
Display layers at certain zoom levels in R Leaflet
我正在使用 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
大多数 "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
我正在使用 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
大多数 "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