传单 GeoJSON 点*后面*多边形

2024-04-18

我有两个传单 geojson 层 - 它们都有点和多边形特征。我希望能够在地图上对它们进行排序,但是当我今天这样做时(尝试通过按特定顺序添加它们来排序它们,使用 BringToBack/bringToFront 等),两个图层中的点图标都位于所有图层的顶部多边形。

原因(根据我有限的经验)似乎是它们绘制在地图中完全不同的窗格上。

我非常希望将某个图层中的点与该图层中的多边形绘制在同一窗格上,因此当我订购所有图层时,“下面”图层的点位于该图层上的多边形下方“在上面”。

有没有一种我错过的简单/明显的方法可以做到这一点,或者今天这是不可能的?

非常感谢!

HTML:

<body>
  <div id='map'></div>
<body>

JS:

var featColl1 = {
  type : 'FeatureCollection',
  features : [
    {
      type: "Feature",
      geometry: {
          type: "Point",
          coordinates: [-100, 48]
      }  
    },
    {
      type: "Feature",
      geometry: {
          type: "Polygon",
          coordinates: [[
            [-104.05, 48.99],
            [-97.22,  48.98],
            [-96.58,  45.94],
            [-104.03, 45.94],
            [-104.05, 48.99]
        ]]
      }  
    }
  ]
};

var featColl2 = {
  type : 'FeatureCollection',
  features : [
    {
      type: "Feature",
      geometry: {
          type: "Point",
          coordinates: [-103, 47]
      }  
    },
    {
      type: "Feature",
      geometry: {
          type: "Polygon",
          coordinates: [[
            [-104.05, 48.99],
            [-97.22,  48.98],
            [-96.58,  45.94],
            [-104.03, 45.94],
            [-104.05, 48.99]
        ]]
      }  
    }
  ]
};

var layer1Opts = {
  style :   { color : 'red' },
  pointToLayer : function(feat, latlng) {
    var opts = {
      icon : L.divIcon({ html : "1", iconSize: [15,15] })
    };
    return L.marker(latlng, opts);
  }
};
var layer2Opts = {
    pointToLayer : function(feat, latlng) {
    var opts = {
      icon : L.divIcon({ html : "2", iconSize: [15,15] })
    };
    return L.marker(latlng, opts);
  }
};


var map = new L.map('map')
  .setView([-103, 49], 5);

L.tileLayer('http://{s}.tile.stamen.com/watercolor/{z}/{x}/{y}.jpg')
  .addTo(map);

var layer1 = L.geoJson(featColl1, layer1Opts).addTo(map);
var layer2 = L.geoJson(featColl2, layer2Opts).addTo(map);

var bounds = new L.LatLngBounds();
bounds.extend(layer1.getBounds());
bounds.extend(layer2.getBounds());

map.fitBounds(bounds);

你不能轻易地用那个笨蛋中的 Leaflet (0.7.3) 版本做你想做的事。

在 Leaflet 1.0(目前处于 Beta 版)中,您可以创建自定义窗格、设置其 z-index 并更好地控制地图上标记、图层和所有元素的绘制顺序。

有关详细信息,请参阅 Leaflet 1.0 文档的这一部分

https://mourner.github.io/Leaflet/reference.html#map-panes https://mourner.github.io/Leaflet/reference.html#map-panes

您可以创建两个自定义窗格,其中一个 z-index 位于覆盖窗格下方(默认 z-index 为 4),另一个 z-index 位于其上方。

然后,您可以根据将图标添加到的窗格来选择图标的显示位置。

所以你的两层的选项看起来像这样

var activePane = map.createPane("activePane"),
    inactivePane = map.createPane("inactivePane");

var layer1Opts = {
  style :   { color : 'red' },
  pointToLayer : function(feat, latlng) {
    var opts = {
      icon : L.divIcon({ html : "1", iconSize: [15,15], pane: "inactivePane" })
    };
    return L.marker(latlng, opts);
  }
};
var layer2Opts = {
    pointToLayer : function(feat, latlng) {
    var opts = {
      icon : L.divIcon({ html : "2", iconSize: [15,15], pane: "activePane" })
    };
    return L.marker(latlng, opts);
  }
};

窗格以这种格式指定一个自动生成的类

传单窗格名称

所以你需要 css 类似:

.leaflet-activePane{z-index:10;}
.leaflet-inactivePane{z-index:3}

因为根据上面的文档链接,3 位于平铺窗格上方但位于覆盖窗格下方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

传单 GeoJSON 点*后面*多边形 的相关文章

  • 使用 fb.ui 时如何检测用户取消共享

    我正在使用提供的文档here https developers facebook com docs sharing reference share dialog使用以下代码 共享对话框正确显示 问题是我无法区分用户在对话框中执行的 取消 和
  • 打印带有图像的 html(每个图像在单独的页面上)

    我有一个带有图像的 HTML img img img img 打印时 我希望每个图像都位于单独的页面上 根据打印尺寸 现在我把图像从中间切掉了 有什么办法可以解决吗 您可以尝试以下方法 p p
  • 计算 HH:MM:SS 中两个日期之间的时间差 javascript

    我用 JavaScript 创建了一个计时器应用程序 首先 它使用当前的 UTC 日期来初始化计时器并提供一些参考 这是代码 on timer function e var self this if e target hasClass pt
  • 如何避免多系列折线图d3.js的工具提示重叠

    我已经在多系列折线图上创建了工具提示 如下所示在这里回答 https stackoverflow com questions 34886070 d3 js multiseries line chart with mouseover tool
  • JQuery UI Draggable - 如何知道元素是否可拖动初始化?

    我的逻辑是 if this draginited a drag disabled element shouldn t get pass here as it is inited this draggable 我搜索了很多 找不到实现这个逻辑
  • 如何使用 javascript/ASP.NET/CSS 旋转和淡入淡出背景图像

    我需要随机淡入淡出背景图像 这将是一个定时函数 例如每 5 秒一次 我需要使用 ASP NET Javascript CSS 或全部三者来完成此操作 请大家帮帮我 谢谢 Cycle 一个 jQuery 插件 是一个非常灵活的图像旋转解决方案
  • 如何使用谷歌地图检测一个点是否在多边形内部?

    我想检测到google maps LatLng是在一个里面google maps Polygon 我怎样才能做到这一点 Cheers 你可以使用这个谷歌地图V3 google maps geometry poly containsLocat
  • 为 Promise 编写循环的正确方法。

    如何正确构造循环以确保满足以下条件承诺电话和被束缚的记录器 log res 通过迭代同步运行 蓝鸟 db getUser email then function res logger log res this is a promise 我尝
  • 如何从矩形点计算旋转角度?

    我有4分1 2 3 4闭合一个矩形 这些点按以下方式排列在数组中 x1 y1 x2 y2 x3 y3 x4 y4 我遇到的问题是矩形可以旋转一定角度 如何计算原始点 灰色轮廓 和角度 我试图在 javascript css3 transfo
  • React-Router v5 History.push 不触发组件

    很抱歉朋友们又问这个问题了 我找到了解决这个问题的几个方法 但他们让我很困惑 我只是想问一个优雅的方法来做到这一点 正如你通过标题所理解的 我有一个关于反应路由的问题 让我解释 我有一个按钮 其名称是Login 单击按钮后 我执行了一些逻辑
  • setTimeout() 的问题

    这是我的代码 我想要它做的是写 0 等待一秒 写 1 等待一秒 写 2 等待一秒 等等 而是写 5 5 5 5 5 for i 0 i lt 5 i setTimeout document write i 1000 http jsfiddl
  • Immutable.js 推入嵌套对象中的数组

    假设有一个对象 const object foo bar 1 2 3 我需要推动4 to object foo bar array 现在我正在这样做 const initialState Immutable fromJS object co
  • 脚本标签内的 Razor RenderSection - 如何将脚本从视图插入模板函数

    我正在使用 MVC 3 和 Razor 视图引擎 我想将多个视图中的脚本注入到一个集中定义的视图中 document ready 母版页中的功能 我已经尝试过以下方法 在我的大师看来 然后 section DocumentReady ale
  • c3js数据标签的位置

    有没有可能的方法来更改数据上方标签的位置c3条形图 在官方文档中 很好地解释了如何通过操作 y 和 x 整数来更改 x 和 y 测量轴上标签的位置 但我没有找到任何数据标签 我试图用简单的方式指出它d3其上c3是基于但是console lo
  • 添加元数据到快速路线

    有什么方法可以将元数据添加到 Express 的路线中吗 例如 app get some route function req res some meta data 我正在寻找一种针对我的节点应用程序的 AOP 方法 因此我想通过身份验证和
  • js中将div旋转到一定高度

    How to rotate a div to certain height suppose 10px I can rotate a div otherwise around 360 degrees I need the angle by w
  • 在 Javascript 中使用 fetch API 接收和处理 JSON

    在我的项目中 当条件不足时 我的 Django 应用程序会发送带有消息的 JSON 响应 我使用这个 JsonResponse 指令 Code data is taken email email return JsonResponse da
  • 来自 ajax 的 Bootstrap 表 json

    我有 ajax 和 bootstrap 表的问题 我有一个 ajax JSON 我用这个方法调用 document ready function ajax url php process php method fetchdata dataT
  • 使用来自Processing-JS的JSON

    我想使用编写一个应用程序处理 JS http processingjs org 并且我希望能够使用服务器端数据加载它 我还没有编写服务器端 所以我可以使用任何东西 但似乎明显的 AJAX 事情是使用 JSON 将数据上传到页面中 如何从我的
  • Page_ClientValidate 正在验证多次。

    我的问题是 验证摘要消息 警报 显示两次 我无法弄清楚原因 请帮忙 这是代码 function validate javascript function if typeof Page ClientValidate function var

随机推荐

  • 通过按键和scrollTo插件向下滚动到下一个元素 - jQuery

    我正在使用 jQuery 的scrollTo http flesler blogspot com 2007 10 jqueryscrollto html插件使用向上箭头和向下箭头向上和向下滚动我的页面 我有一堆带有 screen 类的 di
  • 如何使用 Eclipse 的 google 插件使用经过精心编译的 HTML 来部署 GWT 应用程序

    我使用 eclipse 的 google 插件来部署我的 GWT 应用程序 到目前为止它运行良好 部署操作首先使用 混淆 输出样式编译我的 GWT 项目 现在我希望它更改为 漂亮 因为我必须调试客户端在运行中 我只是看不到混淆的堆栈 Tha
  • PHP MySQLi 权限被拒绝,但可以从 MySQL CLI 运行

    我收到错误 Failed to connect to MySQL Permission denied 当从 PHP 与 MySQL MySQLi 和 PDO 连接到远程 MySQL 主机时 但是 如果我从同一主机在命令行上使用相同的凭据通过
  • Android - StaggeredGrid错误项目处理

    我的 Recycler 视图和 StaggeredGrid 有问题 它将宽度减少了 2 我使用 Picasso 将图像加载到项目中 当我第一次加载图像时 它们在回收器视图中的处理方式很奇怪 重新加载后 一切似乎都很好 我认为问题来自图像加载
  • 调用 sdp_record_register() 时出现分段错误

    我正在尝试使用 BlueZ 在 SDP 中注册我的蓝牙服务 我跟随this http people csail mit edu albert bluez intro x604 html教程 代码编译成功 但当我运行它时 出现分段错误 即使是
  • 如何从 d3 导入子模块以轻松创建图例?

    我对 JavaScript 和 D3 比较陌生 所以请记住这一点 我创建了一个可视化来显示仓库中特定位置的访问频率 并希望使用连续色标添加图例 我看过几个街区 可能会想出一些离题的东西 但是我遇到了this https observable
  • /usr/local/lib 中未找到共享库

    我不明白 我通常安装第三方软件 usr 本地因此库被安装到 usr local lib 中并且链接到这些库从来没有出现问题 但现在它突然不再起作用 gcc lkaytils o test test c usr bin ld gold rea
  • Django 和通用访问卡 (CAC)

    计划用 Python 编写 Web 应用程序 Django 是框架的领先竞争者 一项要求是 CAC 访问 无需手动输入用户名和密码 据我所知 CAC 访问不是 Django 包含的 电池 的一部分 作为一个整体框架 不一定是坏属性 Djan
  • 具有内边缘的 SpriteKit SKPhysicsBody

    我创建了一个SKSpriteNode比如说Map它有一个我定义的边缘路径 一些简单的多边形形状 我想弄清楚的是如何添加几个other将充当内部边缘的边缘路径Map 就好像整个 地图 实际上确实有holes 某种内部边界形状可以与Map整体
  • 计算结构向量中的匹配项

    我有一个问题 要求我计算该数组中使用以下任一方法的实例的数量std count or std find 我知道如何使用标准数据 参见底部代码 类型来执行此操作 但不知道如何使用NameContainer我正在使用的 Type struct
  • Firebase 更新 apple-app-site-association

    我正在实现动态链接 一切正常 除了在我的项目设置中我更改了 团队 ID 又名 AppStore 应用程序前缀 如果我访问myproject page link apple app site association它仍然给我旧的团队 ID 我
  • 如果我在实现工厂模式时使用抽象类而不是接口。它仍然是工厂模式吗?

    例如 http www tutorialspoint com design pattern factory pattern htm http www tutorialspoint com design pattern factory pat
  • MapReduce 排序和洗牌如何工作?

    我正在使用 yelps MRJob 库来实现映射缩减功能 我知道 MapReduce 有一个内部排序和洗牌算法 它根据键对值进行排序 所以如果我在地图阶段后得到以下结果 1 24 4 25 3 26 我知道排序和洗牌阶段将产生以下输出 1
  • 更新到 WorkManager 1.0.0-alpha09 后出现编译错误

    我正在尝试使用架构组件中的 WorkManager 我已将compileSdkVersion和targetSdkVersion从27升级到28 gradle同步已成功完成 但构建时错误不断出现 由于 android support desi
  • 加载表单演示文稿的模态视图的自定义尺寸

    我正在尝试在 iPad 中加载带有表单演示文稿的 UIViewController 问题是这个新视图的大小 我将大小值放在 IBuilder 中 但模式视图采用固定值 我也尝试在prepareForSegue中这样做 HelpViewCon
  • NSOpenPanel 的 setDirectoryURL 不起作用

    我正在尝试使用 NSOpenPanel 的新方法并设置其初始目录 问题是它只在第一次起作用 之后它只是 记住 最后选择的文件夹 这是我不想要的 我必须使用已折旧的 runModalForDirectory file 才能使其工作 它不太理想
  • 运行单元测试时如何禁用 PostSharp?

    我希望我的 nunit 测试不应用任何 PostSharp 方面 这样我就可以单独测试我的方法 这可以在测试夹具设置中以某种方式完成 还是只能在每个项目级别上完成 您可以在测试版本上设置 SkipPostSharp 标志 这样它就不会首先编
  • R将列表逐行写入CSV

    我在 R 中有以下代码 library party dat read csv data csv header TRUE train lt dat 1 1000 test lt dat 1000 1200 output tree lt cfo
  • 如何在 Qt 中重写 QApplication::notify

    我正在尝试处理 Qt 应用程序中的异常 我浏览了几篇文章 其中指出了重写 QApplication notify 方法以在 Qt 中以有效的方式处理异常 我不确定应该在哪里添加这个重写方法 是mainwindow h还是main cpp 我
  • 传单 GeoJSON 点*后面*多边形

    我有两个传单 geojson 层 它们都有点和多边形特征 我希望能够在地图上对它们进行排序 但是当我今天这样做时 尝试通过按特定顺序添加它们来排序它们 使用 BringToBack bringToFront 等 两个图层中的点图标都位于所有