本文使用
Sharpmap 0.9
。
Sharpmap
作为优秀的基于
vs2005
的
GIS
解决方案,大家也对其了解甚多,我就不多说了。在实际使用中,特别是
web
控件,作者并没有暴露很多编程方法,本文基于此进行讨论。
在项目开发中,我们希望在鼠标拖拽时起码要实现几个功能:平移、拉框缩放、拉框选择。通过更改
Sharpmap.UI.dll
的方式修改,可以实现。
首先,增加鼠标拖拽选择模式属性
MouseMode
,并增加
enum
,代码形如:
public
enum
eMouseMode
{
Pan,
Zoom,
Select
}
private
eMouseMode _MouseMode;

/**/
///
<summary>
///
Set Mouse down,up, move event to pan or zoom mode
///
</summary>
[Category(
"
Behavior
"
)]
[DefaultValue(
0
)]
[Description(
"
设置鼠标拖拽方式:即设置Mousedown,Mousemove,Mouseup事件的处理方式。默认值为Pan。
"
)]
public
eMouseMode MouseMode
{
get
{
return
_MouseMode; }
set
{ _MouseMode
=
value; }
}
public
enum
eMouseMode
{
Pan,
Zoom,
Select
}
private
eMouseMode _MouseMode;

/**/
///
<summary>
///
Set Mouse down,up, move event to pan or zoom mode
///
</summary>
[Category(
"
Behavior
"
)]
[DefaultValue(
0
)]
[Description(
"
设置鼠标拖拽方式:即设置Mousedown,Mousemove,Mouseup事件的处理方式。默认值为Pan。
"
)]
public
eMouseMode MouseMode
{
get
{
return
_MouseMode; }
set
{ _MouseMode
=
value; }
}
其次,将属性暴露给
JS
,让客户端可以调用。
通过修改
GenerateClientScripts
函数,增加
setvarsScript
变量定义。
拉框需要有
html
控件,我这里使用
div
。
首先,在
GenerateMapBox
函数中生成控件,使用
Controls.add
方法增加进来。
其次,在
JS
中注册。
通过修改
JS
文件的
SharpMap_Init
函数和
CS
文件的
GenerateClientScripts
函数,将增加的控件暴露给
JS
使用。
至此我们在前后台均可以使用新增加的控件和方法。
然后,就可以在
SharpMap_MouseDown(Up, Over)
函数里面写代码了。