Sharpmap 表现层控件 扩展分析

本文使用Sharpmap 0.9

Sharpmap 作为优秀的基于vs2005GIS解决方案,大家也对其了解甚多,我就不多说了。在实际使用中,特别是web控件,作者并没有暴露很多编程方法,本文基于此进行讨论。

在项目开发中,我们希望在鼠标拖拽时起码要实现几个功能:平移、拉框缩放、拉框选择。通过更改Sharpmap.UI.dll的方式修改,可以实现。

首先,增加鼠标拖拽选择模式属性MouseMode,并增加enum,代码形如:

None.gif public   enum  eMouseMode
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
InBlock.gif            Pan,
InBlock.gif            Zoom,
InBlock.gif            Select
ExpandedBlockEnd.gif        }

None.gif        
private  eMouseMode _MouseMode;
None.gif
ExpandedBlockStart.gifContractedBlock.gif        
/**/ /// <summary>
InBlock.gif        
/// Set Mouse down,up, move event to pan or zoom mode
ExpandedBlockEnd.gif        
/// </summary>

None.gif         [Category( " Behavior " )]
None.gif        [DefaultValue(
0 )]
None.gif        [Description(
" 设置鼠标拖拽方式:即设置Mousedown,Mousemove,Mouseup事件的处理方式。默认值为Pan。 " )]
None.gif        
public  eMouseMode MouseMode
ExpandedBlockStart.gifContractedBlock.gif        
dot.gif {
ExpandedSubBlockStart.gifContractedSubBlock.gif            
get dot.gifreturn _MouseMode; }
ExpandedSubBlockStart.gifContractedSubBlock.gif            
set dot.gif{ _MouseMode = value; }
ExpandedBlockEnd.gif        }

其次,将属性暴露给JS,让客户端可以调用。

       通过修改GenerateClientScripts函数,增加setvarsScript变量定义。

拉框需要有html控件,我这里使用div

首先,在GenerateMapBox函数中生成控件,使用Controls.add方法增加进来。

其次,在JS中注册。

       通过修改JS文件的SharpMap_Init函数和CS文件的GenerateClientScripts函数,将增加的控件暴露给JS使用。

至此我们在前后台均可以使用新增加的控件和方法。

然后,就可以在 SharpMap_MouseDown(Up, Over) 函数里面写代码了。

转载于:https://www.cnblogs.com/anrerbo/archive/2007/05/09/740866.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值