底图图层组的传单图层控制

2024-04-10

简而言之,我需要由传单图层控件控制图层组,一次两到三个。在这个JSFiddle http://jsfiddle.net/knu2xs/FH9VF/3/,当更改底图时,水力叠加层需要始终保持在各种底图之上。

如果您运行并使用右上角的图层控件,您会注意到当您切换到图像时,水力叠加将如何关闭,并且除非您切换到地形并返回国家地理,否则它将保持关闭状态。这是我能够可靠地重现的行为。如果你玩它,你会发现一些非常奇怪的事情正在发生。

欢迎任何关于更好的方法来实现这一目标的意见或建议。该解决方案确实需要使用图层控件来切换底图,同时将水力覆盖保持在顶部。否则,我完全愿意接受替代解决方案。

如果您在跳到之前感到好奇JSFiddle http://jsfiddle.net/knu2xs/FH9VF/3/,这是 JavaScript...

// initialize map
var map = L.map('map', {
    center: [45.7067, -121.5217], // Hood River, OR
    zoom: 7
});

// hydrology overlay layer
var hydro = L.esri.tiledMapLayer('http://hydrology.esri.com/arcgis/rest/services/WorldHydroReferenceOverlay/MapServer');

// basemap layer groups so the hydro overlay always overlays the various basemaps
var nationalGeographic = L.layerGroup([
        hydro,
        L.esri.basemapLayer('NationalGeographic')
    ]),
    esriTopo = L.layerGroup([
        hydro,
        L.esri.basemapLayer('Topographic')
    ]),
    esriShadedRelief = L.layerGroup([
        L.esri.tiledMapLayer('ShadedReliefLabels'),
        hydro,
        L.esri.basemapLayer('ShadedRelief')
    ]),
    esriImagery = L.layerGroup([
        hydro,
        L.esri.basemapLayer('Imagery')
    ]);

// add default layers to map
map.addLayer(esriTopo);

// json object for layer switcher control basemaps
var baseLayers = {
    "National Geographic": nationalGeographic,
    "Esri Topographic": esriTopo,
    "Shaded Relief": esriShadedRelief,
    "Imagery": esriImagery
};

// add layer groups to layer switcher control
var controlLayers = L.control.layers(baseLayers).addTo(map);

解决方案是明确设置水层的 z 指数。搜索出土的 z 索引StackOverflow 上的讨论 https://stackoverflow.com/questions/12848812/layer-ordering-in-leaflet-js并参考Bobby Sudekum 的一个很好的例子 http://bl.ocks.org/rsudekum/5431771。虽然我没有直接实现 Bobby 的解决方案,但它确实让我更深入地研究了API 中的 Leaflet TileLayer http://leafletjs.com/reference.html#tilelayer.

具体来说,zIndex 选项是解决方案。值得注意的是,zIndex 设置为 5 才能正常工作。图层控件自动设置其控制的图层的 z 索引。因此,最初的问题是水层没有索引,但层控制中相互作用的层有索引。结果,图层控制一交互,水层就落到了后面,消失了。因此,对于四个底图图层,Hydro 图层的 z 索引必须为 5,比底图图层的数量多 1,才能显示在所选任何底图图层的顶部。最后,我还实现了 detectorRetina 选项,显着改善了 MacBook Pro 上的显示效果。

这是随附的更新代码更新的 JSFiddle http://jsfiddle.net/FH9VF/11/ http://jsfiddle.net/FH9VF/11/.

// initialize map
var map = L.map('map', {
    center: [45.7067, -121.5217], // Hood River, OR
    zoom: 7
});

// hydrology overlay layer
var hydro = L.esri.tiledMapLayer('http://hydrology.esri.com/arcgis/rest/services/WorldHydroReferenceOverlay/MapServer', {
    zIndex: 5,
    detectRetina: true
});

// basemap layer groups so the hydro overlay always overlays the various basemaps
var nationalGeographic = L.esri.basemapLayer('NationalGeographic'),
    esriTopo = L.esri.basemapLayer('Topographic'),
    esriShadedRelief = L.esri.basemapLayer('ShadedRelief'),
    esriImagery = L.esri.basemapLayer('Imagery');

// add default layers to map
map.addLayer(esriTopo);
map.addLayer(hydro);

// json object for layer switcher control basemaps
var baseLayers = {
    "National Geographic": nationalGeographic,
    "Esri Topographic": esriTopo,
    "Shaded Relief": esriShadedRelief,
    "Imagery": esriImagery
};

// add layer groups to layer switcher control
var controlLayers = L.control.layers(baseLayers).addTo(map);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

底图图层组的传单图层控制 的相关文章

  • 如何将 JSON 转换为 GeoJSON

    我对 javascript 的学习还很陌生 我的基础知识已经碰壁了 我已经设置了一个传单地图 我希望从 JSON 中的绳索上绘制基于 divIcon 的标记 通过我无数次的研究 试图让它发挥作用 我了解到为什么我的 JSON 文件无法工作
  • 传单测量转换的精确度

    map layerPointToLatLng map latLngToLayerPoint L latLng 40 687 73 9035 结果是 纬度 40 686886382151116 经度 73 90228271484375 不精确
  • 有没有办法使用反应传单库使传单弹出响应?

    我一直在研究并且我知道传单 https leafletjs com 有插件https github com yafred leaflet responsive popup https github com yafred leaflet re
  • 传单地图单击更改颜色,然后再次单击时删除

    我正在使用 Leaflet 制作美国地图 并且具有单击功能来放大和更改州的颜色 这可行 但我不能 单击另一个状态时使颜色返回到之前的颜色 目前 每次我点击一个状态 颜色就会改变 并且不会删除之前的颜色变化 这是我的代码 var map L
  • 在 Leaflet 地图上选择多个重叠要素(此处为多边形)中的一个要素

    我有一张地图 上面渲染了多个可以相互重叠的多边形 我用leafletPip pointInLayer 点 层 from https github com mapbox leaflet pip https github com mapbox
  • 如何在隐藏“display: none;”时渲染传单地图家长

    在我的页面上显示传单地图时 我遇到奇怪的行为 通常情况下 地图会按预期渲染并且运行良好 但是 我只想在我在 javascript 中检测到的表单中发生错误时才显示地图 所以如果我设置父级 div to display none 并根据需要稍
  • Leaflet 删除 GeoJSON 层

    我通过在传单中创建 GeoJSON 图层来为地图上的区域着色 首先我创建一个空层 var layerPostalcodes L geoJSON addTo map 然后 我创建一个包含形状信息的 geojson 元素并将其添加到图层中 la
  • 传单自定义图标在缩放时调整大小。性能图标与 divicon

    我试图在放大传单时调整自定义图标的大小 我为此想出了两种解决方案 一个使用L Icon标签 另一个使用L divIcon 在这两个示例中 为了便于阅读 我仅设置了 1 个标记和组 Method 1 using L Icon 用标记进行分组
  • 无法使用 R 的 leaflet 包循环生成多个地图

    这是新来的 对 R 来说也相对较新 所以请原谅 apriori 并让我知道我在这篇文章中做错了什么 以避免将来烦扰其他人 我正在尝试创建传单地图序列 1971 年 9 月至 1972 年 4 月 最后 我想将它们压缩成闪亮的 并让用户播放
  • 带有 Google 卫星图层的 Leaflet Map API [重复]

    这个问题在这里已经有答案了 我对此非常感兴趣传单地图API http leaflet cloudmade com 但是 我需要能够使用 Google 卫星层 我无法找到有关如何将 Google 卫星图层添加到 Leaflet 的示例 我知道
  • 在 L.marker 中使用迭代器

    我试图为每个标记绑定一个 onClick 来调用一个函数 该函数将与该标记关联的数据填充到页面上的元素中 但迭代器 i 似乎正在覆盖自身 每个标记的行为就好像它是最后一个标记一样 迭代 但仅当在与标记关联的 onClick 函数中使用时 我
  • R 和 Leaflet:如何跨多行排列标签文本

    假设您有以下数据框 cities data frame name c Madrid Barcelona Sevilla country c Spain Spain Spain region c Comunidad de Madrid Cat
  • 底图图层组的传单图层控制

    简而言之 我需要由传单图层控件控制图层组 一次两到三个 在这个JSFiddle http jsfiddle net knu2xs FH9VF 3 当更改底图时 水力叠加层需要始终保持在各种底图之上 如果您运行并使用右上角的图层控件 您会注意
  • 使用 R 中的传单库绘制跨越国际日期变更线的路线

    我有兴趣使用 R 的传单库绘制从滑铁卢到台湾的路线 路线的坐标是使用 geosphere 中的 gcIntermediate 函数获得的 然而 该路线涉及穿越国际日期变更线 因此该路线在地图边缘被切断 并在顶部与直线连接 我得到的情节 错误
  • 如何在react 16.4.1中使用leaflet-polylinedecorator

    我正在尝试在react 16 4 1中使用传单插件polylinedecorator 所以没有钩子 然而 我能找到的关于如何在 React 中使用此插件的唯一示例是使用钩子 请参阅 如何将 Polylinedac orator 与 Reac
  • 在 Leaflet L.Draw 插件中以编程方式添加多边形

    有没有办法使用 Leaflet 绘制插件以编程方式添加多边形 https github com Leaflet Leaflet draw https github com Leaflet Leaflet draw 例如 单击一个按钮并添加一
  • 根据纬度和经度识别哪个是多边形

    我有一张使用 leaflet js 绘制的地图 如果我给出经度和纬度值作为输入 我可以识别多边形吗 我可以获得一个客户端脚本吗 得到答复如下 这是基于 多边形中的点算法 function getPoint float x 89 824218
  • 缩放时传单形状会移动

    当我加载页面后放大时 会发生这种情况 https gyazo com 76b0458b1cd836a3b3d6ddaa493585da https gyazo com 76b0458b1cd836a3b3d6ddaa493585da 我是用
  • 使用 leaflet.js 在点周围添加设定大小的正方形多边形

    有点奇怪 希望有人能帮忙 在传单中 一旦用户输入了纬度 经度并向地图添加了一个点 我希望能够在该点周围添加一个 10 公里的正方形 我尝试四处寻找计算方法来找到 x 公里外的正方形角点 但没有挖出任何东西 但肯定有更简单的方法 有人有想法吗
  • leaflet.js 符合 GDPR 的集成

    是否有可能以符合 gdpr 的方式使用 leaflet js 原因是 leaflet js 对地图服务器的所有 大多数 api 调用都会创建第 3 方 cookie 在访问者决定使用地图 API osm gmaps 等 之前 GDPR 法律

随机推荐

  • Ruby on Rails 最佳托管(截至 2012 年)[已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 FileHelpers 动态创建 CSV 文件

    FileHelpers 支持一项名为 运行时记录 的功能 当您直到运行时才知道布局时 该功能可让您将 CSV 文件读入数据表中 是否可以使用 FileHelpers 以相同的方式在运行时创建 CSV 文件 根据某些用户输入 必须创建的 CS
  • 结构体指针数组

    我试图了解我的代码是否正确 我需要声明一个指向结构的指针数组 创建一个新结构并分配值并打印它们 在我看来 我没有正确声明指针数组 我需要知道我做错了什么 谢谢 我收到此编译错误 错误 people 未声明 首次在此函数中使用 我尝试插入 s
  • 将小吃栏移动到底部栏上方

    我在新的底栏上遇到了一些问题 我无法强制将小吃栏移动到底部栏上方 这就是设计指南告诉我应该的方式https www google com design spec components bottom navigation html botto
  • 提高由整数商定义的变量的精度

    假设我有以下程序 program derp implicit none integer parameter ikind selected real kind 18 real kind ikind a 2 0 3 0 print a end
  • System.getproperty("spring.profiles.active") 在 JPA 实体监听器中总是获取 Null

    我正在尝试获取 Spring 活动配置文件JPA实体监听器使用System getproperty spring profiles active 但它总是返回空配置文件 但是我已经检查了服务器并且配置文件配置正确 我尝试使用环境获取 Spr
  • 如何更改过去的提交以包含丢失的文件?

    我已提交更改 但忘记将文件添加到更改集中 在其他提交之后 我意识到该文件现在从HEAD 4 commit 如何重写以前的提交以包含丢失的文件 我意识到人们可以谷歌并来这里找到一个更简单的答案 如果这只是最后一次提交怎么办 OP的问题是修复历
  • 如何使用 Spring Boot 和 Cassandra 将枚举持久化为序数?

    我已添加到实体的枚举字段 CassandraType type DataType Name INT 然而 在发送到 Cassandra 的语句中使用的不是枚举的序数 而是字符串表示形式 因此我收到以下错误 org springframewo
  • POI:意外的记录类型 org.apache.poi.hssf.record.HyperlinkRecord

    我正在执行一项简单的任务 读取 Excel 文件并将其转换为对象 不过 我在读取 Excel 文件 xls 时遇到问题 我将从外部系统接收它 也许他们自动生成它 如果我打开它并进行简单的保存 无论是否更改 Excel 文件中的任何内容 我的
  • C++ tbb_debug.dll 丢失

    我是 openCV 的新手 我尝试遵循一些教程 一切工作正常 直到我包含 opencv2 imgproc imgproc hpp 并使用 filter2D 函数 当我启动我的程序时 出现以下错误 程序无法启动 因为您的计算机缺少 tbb d
  • DataContractSerializer 和已知类型

    我正在代码中序列化一个对象 不是通过 WCF 调用 并且我对已知类型有点沉迷 我已将它们与 WCF 一起使用 但没有将 DataContract 序列化器作为 独立 序列化器使用 当我运行下面的代码时出现异常 我希望它运行时不会出现错误 因
  • WebStorm 和 TypeScript:如何导航到包的 JS 源文件?

    假设在我的 TypeScript 项目中 我使用 Express 和如下方法 response send Hello 我想看看如何send 方法被实施 但是 当我在 WebStorm 中按住 Ctrl 键并单击方法名称时 它会将我带到 d
  • 临时文件 asp.net resx 文件,“已添加具有相同密钥的项目”

    几周前 我们将服务器从 NET 4 5 更新到 4 5 1 并将代码更改为作为 优化代码 运行 在即将发布的版本中 我们开始在日志中收到奇怪的错误消息 并且网站刚刚崩溃 System ArgumentException An item wi
  • php数组加载到javascript中

    所以我是个 php javascript 菜鸟 我正在尝试将完整的 php 数组加载到 javascript 数组中 我为 JavaScript 写了这个 var names new Array for var i 0 i lt 48 i
  • Java 中的非空白匹配

    我想检测其中包含非空白字符的字符串 现在我正在尝试 Pattern matches S city 但它似乎不起作用 有没有人有什么建议 我知道我可以修剪字符串并测试它是否等于空字符串 但我宁愿这样做 您认为正则表达式到底匹配什么 Try P
  • ruby - 文件私有方法

    在ruby中 有没有办法定义一个方法 该方法对文件 或模块 中的每个类都可见 但对需要该文件的文件不可见 相关 但不完全相同 我们可以重新定义一个方法 例如标准库的类中的方法 以便此重新定义仅在当前文件中可见吗 所有其他文件应查看原始定义
  • Python:检查对象是否可以原子方式pickle

    检查对象是否可以被原子腌制的准确方法是什么 当我说 原子腌制 时 我的意思是不考虑它可能引用的其他对象 例如 这个列表 l threading Lock 不是一个可腌制的对象 因为它指的是Lock这是不可腌制的 但从原子角度来看 这个列表本
  • 使用 Microsoft bot 框架下载文件(pdf/图像)

    我想下载文档 图像 文档 图像位于互联网上 我给出了它的路径 但它不起作用 但是 如果我只是评论附件部分 我就能从 BOT 那里得到 嗨 让控制器像这样 BotAuthentication public class MessagesCont
  • System.setProperty("sun.net.http.allowRestrictedHeaders", "true") 在詹金斯中不起作用

    我正在尝试在 http 请求标头中发送原始标头 但是当我获取其值时 我得到的是 null 而不是我在原始标头中设置的 url 另外 我还使用以下命令启用了受限标头作为詹金斯作业中请求标头的一部分发送 System setProperty s
  • 底图图层组的传单图层控制

    简而言之 我需要由传单图层控件控制图层组 一次两到三个 在这个JSFiddle http jsfiddle net knu2xs FH9VF 3 当更改底图时 水力叠加层需要始终保持在各种底图之上 如果您运行并使用右上角的图层控件 您会注意