【前言】javascript
有好些网友问我怎么使用Server发布的地图服务了,其实很是的简单。css
我在这里先声明:不提供Server软件,须要的请自行使用互联网搜索资源;html
不阐述Server如何发布各各类服务,可是我会给出官方的文档(点我),发布服务其实各类老教程都不少了。前端
【软件准备】java
·Windows 64位以上的系统,XP能够歇菜了,Server是64位原生软件;//Linux发行版也能够,能用Server就行编程
·ArcGIS for Server 10.x版本windows
·ArcGIS for Desktop(用于发布服务)浏览器
若是有本身的服务器,能够在服务器端安装ArcServer,可是ArcServer对服务器的性能、带宽和存储有要求,请自行参考官方文档。服务器
固然也能够在本地安装Server,用本机构建B/S架构。网络
ArcGIS桌面软件用于发布服务,数据本身准备。
一枚浏览器,推荐WebKit内核的Chrome、火狐等。
一个能写Web前端的编辑器,本人使用VSCode.
其中后两个必须,前三个非必需,只要获得下文提到的REST URL就能够进行AJS编程。
好,上课。
话说有一阵子没写博客了,忙啊,看学校,复习,各类乱七八糟的事情,AJS的笔记也没跟上,卡在一个空间查询的例子上了。
通常安装好ArcGIS for Server后,进入管理页面就有一个示例服务:
点击紫色框框的a标签,进入这个服务的具体信息的功能页
找到REST URL,复制下来。
如今使用AJS 4.3来构建一个最基本的SceneView网页,代码以下:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="initial-scale=1,maximum-scale=1,user-scalable=no"> <title>FeatureLayer - 4.3</title> <link rel="stylesheet" href="https://js.arcgis.com/4.3/esri/css/main.css"> <script src="https://js.arcgis.com/4.3/"></script> <style> html, body, #viewDiv { padding: 0; margin: 0; height: 100%; width: 100%; } </style> <script> require([ "esri/Map", "esri/views/SceneView", "esri/layers/FeatureLayer", "dojo/domReady!" ], function( Map, SceneView, FeatureLayer ) { var map = new Map({ basemap: "hybrid" }); var view = new SceneView({ container: "viewDiv", map: map, }); var featureLayer = new FeatureLayer({ url: "https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer" }); map.add(featureLayer); }); </script> </head> <body> <div id="viewDiv"></div> </body> </html>
其中最关键的就是:
var featureLayer = new FeatureLayer({ url:"https://localhost:6443/arcgis/rest/services/SampleWorldCities/MapServer" });
url就是刚刚复制下来的REST URL,REST URL的构成大概是
“https://IP地址:端口/用户信息(用户群组、用户名等)/rest/services/服务名称/服务类型/子项”
或者
“https://域名/后面相同”
运行起来就是:
请注意,直接复制个人的代码是不能跑出来这个效果的,请使用能用的REST URL,AJS 4.X的示例代码中有一些例子的URL能够测试,请自行查找。
那么怎么知道哪些服务对应哪些AJS 类呢?
在Layer中,官方展现页面以下:
我直接列出一些经常使用的好了:
问题来了,除了MapServer、FeatureServer等服务,还有NAServer不少,哪里能用上呢?
AJS能用上的服务有限,Server自己并不仅是单独针对AJS使用的。
在AJS的网络分析示例中,就可使用NAServer:
var routeTask = new RouteTask({ url: "https://route.arcgis.com/arcgis/rest/services/World/Route/NAServer/Route_World" });
还有不少服务能在AJS的例子中找到,因为AJS的笔记还没写完,我往后发现一个就更新一个。
routeTask类的url可使用NAServer;发布网络分析服务能够查看这里:点我
相关网络分析服务见这里:点我
QueryTask的url可使用MapServer、FeatureServer
FindTask可使用MapServer实例化。
IdentifyTask可使用MapServer实例化。
Geoprocessor可使用GPServer实例化,能够根据子项进行不一样的分析。在AJS的例子中,使用了可视域分析和热力图分析,GPServer(地理处理服务)的不一样子项而已。
关于GPServer的发布与使用,能够查看Server的帮助文档:点我
其实就是ArcMap的各类处理。
点云图层能够为其url属性赋一个SceneServer的URL来实例化。
使用NAServer。
使用GeometryServer;如
var geoSer = new GeometryService({url:"https://sampleserver6.arcgisonline.com/arcgis/rest/services/Utilities/Geometry/GeometryServer"});
使用GeocodeServer(地理编码服务)。
如:
var locator = new Locator({url:"http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer"});
使用NAServer。(疑似)
疑似为MapServer,与IdentifyTask相似。