这里常用的功能主要指地图的基本操作,如放大、缩小、全局显示、框选、圆选什么的。是我们在系统中最常用到的功能。分析下demo可以看出这些基本操作supermap都将其封装为了一个SuperMap.IS.Action.js这个文件,里面的基类就是SuperMap.IS.Action这个类了。主要包括Init,Destroy,OnClick,OnDoubleClick,OnmouseMove 等鼠标事件,就不详细列了。当我们编程时使用MapControl1.SetAction(action)时,就会调用action中的init函数,并将地图上的操作监听起来,通过鼠标的与地图的交互来完成我们的一些操作。所以我们可以根据其SuperMap.IS.Action这个基类来写我们自己的一些action。
下面来自己封装下对应的一些常用功能函数,便于以后的重用。
先贴代码,^_^。
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
1
///<summary>常用功能(工具栏功能)</summary>
2![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
3
HJMapUtils.CommonUtils = Class(object,
4![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
5![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
6![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
7
zoomInAction: null,
8![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
9
panAction: null,
10![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
11
drawLineAction: null,
12![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
13
measureAreaAction: null,
14![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
15
measureDistanceAction: null,
16![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
17
18![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
19
20![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
21
rectQueryAction: null,
22![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
23![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
Create: function(mapControl, divResult)
{
24![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
25
///<summary>常用功能构造函数</summary>
26![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
27
///<param name="mapControl">地图控件</param>
28![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
29
///<param name="divResult">查询结果信息容器</param>
30![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
31
this.MapControl1 = mapControl;
32![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
33
object.divResult = divResult;
34![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
35
},
36![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
37![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
ViewEntire: function()
{
38![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
39
///<summary>全局显示</summary>
40![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
41
this.MapControl1.ViewEntire();
42![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
43
},
44![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
45![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
SetZoomInAction: function()
{
46![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
47
///<summary>放大</summary>
48![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
49![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (!this.zoomInAction)
{
50![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
51
this.zoomInAction = new SuperMap.IS.ZoomInAction();
52![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
53
};
54![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
55
this.MapControl1.SetAction(this.zoomInAction);
56![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
57
},
58![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
59
60![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
61![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
SetPanAction: function()
{
62![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
63
///<summary>平移</summary>
64![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
65![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (!this.panAction)
{
66![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
67
this.panAction = new SuperMap.IS.PanAction();
68![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
69
};
70![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
71
this.MapControl1.SetAction(this.panAction);
72![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
73
},
74![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
75![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
SetDrawLineAction: function()
{
76![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
77
///<summary>画线</summary>
78![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
79![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (!this.drawLineAction)
{
80![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
81
this.drawLineAction = new SuperMap.IS.DrawLineAction();
82![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
83
}
84![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
85
this.MapControl1.SetAction(this.drawLineAction);
86![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
87
},
88![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
89![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
SetPointQueryAction: function(queryLayer, returnFields, whereClause)
{
90![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
91
///<summary>点查询</summary>
92![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
93
///<param name="queryLayer">查询图层(多个图层用','隔开)</param>
94![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
95
///<param name="returnFields">返回字段(多个使用','隔开)</param>
96![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
97
///<param name="whereClause">图层限制条件(多个用','隔开,没有设置为'')</param>
98![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
99
100![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
101![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
if (!this.pointQueryAction)
{
102![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
103
var layers = this.SetQueryLayers(queryLayer);
104![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
105
var fields = this.SetReturnFields(returnFields);
106![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
107
var whereclause = this.SetWhereClause(whereClause);
108![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
109
this.pointQueryAction = new SuperMap.IS.PointQueryAction(layers, fields, 200, whereclause, this.onQueryComplete, this.onError);
110![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
111
}
112![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
113
this.MapControl1.SetAction(this.pointQueryAction);
114![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
115
}
116![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
117
}
通过编程我们发现常用的功能还是很容易实现的,supermap已经将常用的功能封装好供我们简单的调用,只用new 出一个对应的action,并绑定到mapctrol中就可以使用。就关于点查询等需要处理查询结果的需要写相关查询结果处理函数,如上面的onQueryComplete函数,它会返回一个result的参数,即结果数据集(不知道为什么,好像圆选会有些问题......)。相比AGS来说,会感觉实现这些功能比较简单多,不像ADF中得写相关实现ImapServerToolAction的类及相关代码。有兴趣的可以试试自己写写自定义的action,如过去点击点的坐标等。^_^