Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在R传单中以特定缩放级别显示图层_Javascript_R_Leaflet_Gis - Fatal编程技术网

Javascript 在R传单中以特定缩放级别显示图层

Javascript 在R传单中以特定缩放级别显示图层,javascript,r,leaflet,gis,Javascript,R,Leaflet,Gis,我正在制作一张带有R软件包“传单”的交互式地图 我想根据缩放级别自动更改可见层 例如,我希望放大时多边形层消失,由点层替换。大概是这样的: 我一直在尝试许多不同的技巧,并详细探索“传单”和“传单.附加”软件包的帮助,但找不到任何可以这样做的东西 我还直接从传单中找到了一些东西,但在R下似乎无法复制: 我尝试使用markerOptions中的minZoom和maxZoom选项,但它似乎没有达到我想要的效果 下面是我的示例代码: require(spData) require(leaflet)

我正在制作一张带有R软件包“传单”的交互式地图

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

例如,我希望放大时多边形层消失,由点层替换。大概是这样的:

我一直在尝试许多不同的技巧,并详细探索“传单”和“传单.附加”软件包的帮助,但找不到任何可以这样做的东西

我还直接从传单中找到了一些东西,但在R下似乎无法复制:

我尝试使用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")

需要(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左右的值。