arcgis js开发系列源码请移步我的github上获取(https://github.com/lpgray/arcgis-js-showcase

我给这次arcgis的js开发学习制定了一个简单的路线:
1. 搭建开发环境与配置IDE
2. 构建第一个地图(跟着arcgis官方tutorial做)
3. 显示内网发布的arcgis service地图
4. 开发一个搜索功能(输入地名可以在地图上显示对应位置)
实际上,以上4步对于老手来说,都不难,可以说相当简单,只不过对于不了解arcgis与gis相关专业知识的我,遇到了好多问题。

1. 搭建开发环境与配置IDE

首先是下载arcgis_js_api_3.5,将其部署在本机tomcat服务器上,这个也很简单,下载完arcgis_js_api以后,其中会有文档,跟着文档就能部署起来了。然后搭建IDE,一直以来前端开发我都是使用Aptana3,刚好arcgis官方也推荐它,所以第一步没有遇到多少困难,关于给Aptana添加esri的代码提示,相当容易,从arcgis官网上下载js_doc,是一个js文件,扔到你的项目中就可以自动提示了,Aptana会自动搜索。

2. 构建第一个地图

这一步是根据官网上的教程,直接使用arcgis的一个底图,跟官网上的代码一模一样,只不过用了本地的api,显示了一张世界地图,效果如下,没有什么复杂的。

3. 显示内网发布的 arcgis service 地图

在这一步显示地图的时候没有遇到困难,采用的是 ArcgisDynamicLayer 的形式添加到 map 对象上。通过内网发布的 arcgis server 的地址,去加载服务,以动态图层的形式添加。很简单,就几行代码。

dojo.require("esri.map");

var map, dynamicMapServiceLayer, layerId;
function init() {
omap = new esri.Map("map");
    
    layerId = "http://192.168.0.202:6080/arcgis/rest/services/ganyu/TDLYXZ_H_320721_2012/MapServer";
    dynamicMapServiceLayer = new esri.layers.ArcGISDynamicMapServiceLayer(layerId);
    
    map.addLayer(dynamicMapServiceLayer);
}
dojo.ready(init);

4. 开发一个搜索功能

在这一步的时候,我想要实现跟官网上一个例子一样的效果,即搜索——定位。可是折腾了好久都没有成功,因为内网没有发布支持检索的arcgis服务。而我错把 arcgis 的 MapServer 用来检索,答案肯定是不行的,对于这个发现的总结如下,对于arcgis发布的服务所具有的服务类型应该有一个基本的认识,不同类型的服务提供的功能也不一样。比如MapServer是最常规的地图展示(目前我就知道这一个),此外还有FeatureServer用来查看对应地块的属性信息(在地图上点击地块),其他一些服务类型我就不尽知了,网上整理了一部分资料如下图。

调查发现 MapService 是支持两个搜索式任务的,即 find 和 identify,前者是属性查询也算常规查询,后者是几何查询,具体通过MapService怎么实现搜索功能,是我下一步学习的重点。一旦实现,教程会很快奉上。