Javascript 在R传单中以特定缩放级别显示图层
我正在制作一张带有R软件包“传单”的交互式地图 我想根据缩放级别自动更改可见层 例如,我希望放大时多边形层消失,由点层替换。大概是这样的: 我一直在尝试许多不同的技巧,并详细探索“传单”和“传单.附加”软件包的帮助,但找不到任何可以这样做的东西 我还直接从传单中找到了一些东西,但在R下似乎无法复制: 我尝试使用markerOptions中的minZoom和maxZoom选项,但它似乎没有达到我想要的效果 下面是我的示例代码:Javascript 在R传单中以特定缩放级别显示图层,javascript,r,leaflet,gis,Javascript,R,Leaflet,Gis,我正在制作一张带有R软件包“传单”的交互式地图 我想根据缩放级别自动更改可见层 例如,我希望放大时多边形层消失,由点层替换。大概是这样的: 我一直在尝试许多不同的技巧,并详细探索“传单”和“传单.附加”软件包的帮助,但找不到任何可以这样做的东西 我还直接从传单中找到了一些东西,但在R下似乎无法复制: 我尝试使用markerOptions中的minZoom和maxZoom选项,但它似乎没有达到我想要的效果 下面是我的示例代码: require(spData) require(leaflet)
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")
需要(spData)
要求(单张)
要求(sf)
#从包spData加载国家/地区的形状
数据(世界)
世界%
addCircleMarkers(液化天然气=地震$long,
lat=地震$lat,
col=“蓝色”,
半径=3,
笔划=假,
fillOpacity=0.7,
选项=标记选项(最小缩放=15,最大缩放=20))%>%
addPolygons(数据=大洋洲,
col=“红色”)
它为我提供了openstreetmap中预期背景的预期图层,但minZoom和maxZoom参数没有改变任何东西。我希望点层只出现在缩放级别15和20之间,但它似乎不是这样工作的
大多数“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
你的解决方案很有效。然而,对于本例,我最初选择的15到20之间的缩放级别显然太高,给人的印象是这个解决方案不起作用。这里需要一个5左右的值。