leaflet - 如何获取发送到打印服务器或拦截请求结果的范围和规模?
问题描述
我正在使用传单和 esri-leaflet 从专有的 ArcGIS 服务器创建地图。我正在尝试从打印服务器取回 PDF。我有使用 ESRI API 3.x 的示例,但找不到使用 esri-leaflet 的示例。
我知道打印服务器请求的格式并且可以创建打印服务器请求,但 mapOptions 部分除外,我需要范围、空间参考和比例。我还知道每次图像更改时都会向地图服务器发送一个导出请求,并且该请求的响应包含我需要的信息。但是请求不是由我的代码生成的——它是作为事件的结果发生的。
Esri-leaflet 有一个事件 requestsuccess 似乎是我需要的。如果我可以拦截所有成功的请求,我可以检查它是否是导出请求并保存范围和规模(范围内嵌入了 SR)。但是,我找不到任何示例,并且文档几乎没有给我关于如何进行的线索。
我并不热衷于拦截请求,但似乎是获得我需要的最直接的方法。我确实知道我可以从传单中获取边界并转换为范围,但是获得比例更难(必须获得缩放级别并为此进行映射)。所以这可能是另一种选择。
解决方案
Esri 传单包含一个方便的实用方法,可将传单边界对象转换为 Esri 范围对象文字
// http://esri.github.io/esri-leaflet/api-reference/util.html
L.esri.Util.boundsToExtent(map.getBounds())
要获得比例,您只需要在当前缩放级别上做一些数学运算。
// https://gis.stackexchange.com/a/81390/21012
591657550.500000 / Math.pow(2, map.getZoom() - 1)
现场演示: http: //jsbin.com/ceceqir/edit ?html,output
推荐阅读
- javascript - 如何使用 ngx 数据绑定将复选框绑定到选择禁用的属性?
- c# - 清除 Winform 文本框代码片段说明
- java - 如何使用 getAllSelectedOptions 从多个下拉列表中获取选定的选项
- svn - VisualSVN 服务器从 Windows 2008 迁移到 2012(Svn 版本 2.7.14)
- php - SwaggerUI 传递参数
- c# - 用另一个覆盖 IExternal 命令
- python - 如何从 Django 字段中检索数据?
- python - 使用 email.mime 时无法在电子邮件正文中看到 pandas 数据框
- node.js - Node 中 Http Get 的异步使用
- android - 我可以同时使用两个不同的功能从数据库中检索两个文档吗?