Arcgis API for Javascript入门(一)

来源:互联网 发布:ubuntu 14 ssh 编辑:程序博客网 时间:2024/05/01 18:07

1、ArcGIS JS API涉及知识快速了解:

1.1REST API:

目前我们在开发过程中使用最多的就是REST服务接口了,REST是一种轻量级的Web Service架构风格,其实现和操作较为简洁,可以完全通过http协议实现。下面是关于REST的一些基础知识:
(1)、在REST中,一切的一切都被认为是一种资源,每个资源由URI标识;
(2)、对资源的操作包括获取、创建、修改和删除资源,这些操作正好对应着HTTP协议提供的GET,POST,PUT,DELETE方法,也就是说使用统一的接口,而不像SOAP风格的服务那样,每个服务的名称都是不同的。
(3)、每一个请求都是一个独立的请求,从客户端到服务器的每个请求都必须包含所有必要的信息,便于理解;
(4)、资源的表现形式则是JSON,XML或者HTML,取决于读者是机器还是人,是消费web服务的客户软件还是web浏览器。当然也可以是任何其他的形式。

1.2.JavaScript:

JavaScript诞生于1995年,最初的主要目的是用来处理以前由服务器端语言负责的一些输入和验证操作,随着时代的不断发展,他逐渐发展成为了一门强大的编程语言。下面简单介绍一下JavaScript的一些主要特点:

(1)、脚本语言
JavaScript是一种脚本语言,是解释执行的,它并不像一些高级语言一样需要被提前编译,而是在程序运行的过程中被逐行解释的。
(2)、基于对象的语言
JavaScript是一种基于对象的语言,同时也是可以看做是面向对象的。例如JavaScript的继承方式。
(3)、动态性
JavaScript是动态的,他可以直接对用户或客户的输入做出相应而无需经过web服务程序。例如按下鼠标,移动窗口,选择菜单等都可以作为事件,当事件发生时,可能会引起相应的事件响应。
(4)、跨平台性
JavaScript依赖于浏览器本身,与操作环境无关,只要有能运行浏览器的计算机,并支持JavaScript的浏览器都可以运行。

1.3.Ajax:

Ajax又叫做阿贾克斯,是一种创建交互式网页应用的网页开发技术。如果没有使用ajax的传统网页需要更新内容,必须重载整个网页页面,而ajax可以通过后台与服务器进行少量的数据交换,使网页实现异步更新,这意味着可以在不重新加载网页的情况下,对网页的某部分进行更新。例如新浪微博登录。
这里写图片描述

1.4.Dojo:

Dojo是一个用JavaScript语言实现的开源工具包,主要由三大模块组成:Core、Dijit、Dojox;
下面介绍一下Dojo的一些主要特点:
(1)、Dojo是一个纯JavaScript库;
(2)、Dojo自身定义了完整的函数库,屏蔽了浏览器的差异;
(3)、Dojo自身定义了界面组件库;

2、ArcGIS JS API开发原理简单解析:

(1)、将Ajs API开发的应用部署到web服务器上,供用户通过浏览器或者移动端进行访问和操作;
(2)、当用户操作web应用或者移动端应用的时候,ajs api会监控用户的操作行为,并相应的将用户的操作按照Arcgis for Server提供的rest api 的格式转换为http请求,设置请求的地址、参数提交给arcgis for server;
(3)、arcgis for server收到rest请求之后根据参数进行处理,得到结果,并将结果转化为json数据,将数据作为REST 请求的响应返回给ajs api,由ajs api对数据进行解析,转换为API中的对象,方便应用将结果可视化的展示在应用中。
ArcGIS JS API开发原理简单解析

3、ArcGIS JS API开发环境搭建:

ArcGIS JS API开发环境可以使用两种部署方式,如下图所示:
这里写图片描述
我们可以使用以下的IDE进行ajs api的开发:
这里写图片描述
这里,我个人使用的是Sublime Text3,事实上,由于ajs api的运行实在浏览器上运行的,所以即使你使用记事本也是可以进行开发的,只是效率可能会比较低。

4、ArcGIS JS API重点对象介绍:

4.1、Map

Map是承载图层的容器,主要用于呈现地图服务,影像服务,此外还可以展示WMS服务等,Map对象需要依托于html页面中的一个div容器作为根节点。地图中包含有若干图层,一个图层只有被添加到map中才能够显示出来。
Map对象初始化后就包含一个默认的Graphics图层,可以通过map.graphics获取,用户可以通过这个接口自定义图形;
Map对象包含了一个infoWindow;

4.2、Layer

图层是承载服务的载体(GraphicsLayer除外),Arcgis for Server将GIS资源作为服务发布出来,要想在浏览器端看到这些服务,就需要将这些服务与图层之间进行关联,并将其加入到地图中作为一个可视化的图层才能够被客户端使用,不同的服务对应着不同的图层。
这里写图片描述
所有layer的继承关系图

4.3、Geometry

几何对象用于表示对象的显示形式,在ajs api中,Geometry大体上可以分为下面几类:点,多点,线,矩形,多边和屏幕点,其中Screen是以像素的方式表示的点。下面是所有几何体对象的继承方式:
这里写图片描述

4.4、Symbol

符号定义了如何GraphicLayer上显示点,线,面和文本,并且定义了几何对象的所有非地理特征方面的外观,包括图形的颜色,边框线宽度,透明度等等。常见的符号类型之间的继承关系如下表所示:
这里写图片描述

4.5、Graphic

Geometry定义了对象的形状,Symbol定义了图形是如何显示的,Graphic可以包含一些属性信息,并且在JavaScript中还可以使用InfoTemplate定义如何对属性信息进行显示,最终的Graphic则被添加到GraphicsLayer中。
简单来说:Graphic = Geometry + Attributes + Symbol + InfoTemplate,下图可以直观的表示这种关系:
这里写图片描述

4.6、Render

渲染器是以一个图层为单位来改变其符号的工具,通常Symbol对象改变符号是需要逐个设置的,渲染器则是方便的对图层进行有规律的渲染。API中提供了6种渲染器,他们都继承了Render的抽象类;
这里写图片描述

4.7、FeatureSet

FeatureSet相当于地理数据库中的一个要素类,是feature的集合,FeatureSet中的每一个feature可能包含Geometry、属性、符号和一个InfoTemplate。如果FeatureSet不包含Geometry,只包含属性,那他相当于一个表。
FeatureSet是我们在使用ajs api与arcgis server进行通信时的一个重要对象,当使用查询、地理处理和路径分析的时候,FeatureSet常常作为这些分析功能的输入和输出参数。

5、ArcGIS JS API事件

在api中有多种实现使用事件监听的方法:dojo/aspect,dojo/_base/connect,on,其中推荐大家使用的是dojo的on函数,考虑到dojo版本的兼容性,对dojo的connect方法也进行适当讲解:
增加、删除事件响应:
On: 增加: var myUnload=map.on(“unload”,unloadHandler);
删除: myUnload.remove();
Connect:增加:
var myUnload_connect=connect.connect(“map”,”onUnload”,unloadhandler_connect);
删除:connect.disconnect(myUnload_connect);

6、ArcGIS JS API控件

Ajs api提供了许多用来帮助我们快速开发的控件或者小部件,这些控件除了工具条之外,其余都位于esri/dijit中,工具条位于esri/toolbars中;
Api中的所有组件都按照dojo的标准注册成了dijit,在dijit的生命周期中,通过startup方法创建,通过destory方法销毁。

7、关于性能优化:

7.1、使用AMD:

AMD(异步模块定义),采用异步方式加载模块。模块加载不影响后面语句的运行。所有依赖这些模块的语句都定义在一个回调函数中,加载完成之后这个回调函数才会运行。
好处:异步的加载机制,同时下载多个JS文件、减小代码的加载时间;
不会阻塞浏览器,有更好的性能和灵活性;
前端标准化,提高代码可维护性;

7.2、对js文件进行压缩

2 0