首页 > 解决方案 > 如何获取发送到打印服务器或拦截请求结果的范围和规模?

问题描述

我正在使用传单和 esri-leaflet 从专有的 ArcGIS 服务器创建地图。我正在尝试从打印服务器取回 PDF。我有使用 ESRI API 3.x 的示例,但找不到使用 esri-leaflet 的示例。

我知道打印服务器请求的格式并且可以创建打印服务器请求,但 mapOptions 部分除外,我需要范围、空间参考和比例。我还知道每次图像更改时都会向地图服务器发送一个导出请求,并且该请求的响应包含我需要的信息。但是请求不是由我的代码生成的——它是作为事件的结果发生的。

Esri-leaflet 有一个事件 requestsuccess 似乎是我需要的。如果我可以拦截所有成功的请求,我可以检查它是否是导出请求并保存范围和规模(范围内嵌入了 SR)。但是,我找不到任何示例,并且文档几乎没有给我关于如何进行的线索。

我并不热衷于拦截请求,但似乎是获得我需要的最直接的方法。我确实知道我可以从传单中获取边界并转换为范围,但是获得比例更难(必须获得缩放级别并为此进行映射)。所以这可能是另一种选择。

标签: leafletesri-leaflet

解决方案


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


推荐阅读