gpt4 book ai didi

javascript - 从 ArcGIS JavaScript API map 对象获取 JSON WebMap

转载 作者:行者123 更新时间:2023-11-29 19:18:15 24 4
gpt4 key购买 nike

我正在尝试从 ArcGIS JavaScript API 中的 JavaScript map 对象获取 WebMap 对象(作为 JSON)。有没有办法在不使用 ArcGIS.com 的情况下在 API 中执行此操作?理想情况下是这样的:

webMapAsJSON = map.toWebMap();

From the "Export Web Map Task" documentation在 REST API 中,这一行表明它应该存在:

"The ArcGIS web APIs (for JavaScript, Flex, Silverlight, etc.) allow developers to easily get this JSON string from the map."

但是,我在 Map 对象或 API 的其他地方没有看到任何可以执行此操作的内容。

最佳答案

你不能。至少不是正式的。不推荐以下概述的步骤。他们使用的 ArcGIS JS 库的一部分不是公共(public) API 的一部分,因此这种行为可能无法在下一版本的 API 中使用,或者他们可能会回补以前版本的 API,这甚至可能会停止工作以前确实有效。

就是说,有时您现在需要一些“ future ”功能,这实际上是使用常见的 proxy pattern 获得您想要的功能的一种非常简单的方法。

使用未记录的“私有(private)”函数 _getPrintDefinition

var proxy_getPrintDefinition = printTask._getPrintDefinition;

printTask._getPrintDefinition = function() {
var getPrintDefResult = proxy_getPrintDefinition.apply(this, arguments);
//Now you can do what you want with getPrintDefResults
//which should contain the Web_Map_as_JSON

console.log(Json.stringify(getPrintDefResult));

//make sure you return the result or you'll break this print task.
return getPrintDefResult;
}

_getPrintDefinition 将 map 作为第一个参数,将 PrintParameters 对象作为第二个参数。

所以你必须创建一个 PrintTask , 如上所述在新创建的打印任务上重新定义 _getPrintDefinition 函数,创建一个 PrintParameters然后运行:

myPrintTask._getPrintDefinition(myMap,myPrintParameters);

我的小测试的结果是:

{"mapOptions":{"showAttribution":false,"extent":{"xmin":-7967955.990468411,"ymin":5162705.099750506,"xmax":-7931266.216891576,"ymax":5184470.54355468,
"spatialReference":{"wkid":102100,"latestWkid":3857}},"spatialReference":{"wkid":102100,"latestWkid":3857}},
"operationalLayers":[
{"id":"layer0","title":"layer0","opacity":1,"minScale":591657527.591555,"maxScale":70.5310735,"url":"http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer"},
{"id":"XXX-Redacted-XXX","title":"serviceTitle","opacity":1,"minScale":0,"maxScale":0,"token":"XXX-Redacted-XXX","url":"http://XXX-Redacted-XXX/arcgis/rest/services/TestService/MapServer"},
{"id":"XXX-Redacted-XXX","opacity":1,"minScale":0,"maxScale":0,"featureCollection":{"layers":[]}},
{"id":"featureGraphics","opacity":1,"minScale":0,"maxScale":0,"featureCollection":{"layers":[]}},
{"id":"map_graphics","opacity":1,"minScale":0,"maxScale":0,"featureCollection":{"layers":[]}}
]}

如果你不需要对 web map json 做任何操作,只需要输出那么你甚至不需要使用代理模式。

关于javascript - 从 ArcGIS JavaScript API map 对象获取 JSON WebMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34346304/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com