本文使用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; }
}
其次,將屬性暴露給JS,讓客戶端可以調用。
通過修改GenerateClientScripts函數,增加setvarsScript變量定義。
拉框需要有html控件,我這裡使用div。
首先,在GenerateMapBox函數中生成控件,使用Controls.add方法增加進來。
其次,在JS中注冊。
通過修改JS文件的SharpMap_Init函數和CS文件的GenerateClientScripts函數,將增加的控件暴露給 JS使用。
至此我們在前後台均可以使用新增加的控件和方法。
然後,就可以在SharpMap_MouseDown(Up, Over)函數裡面寫代碼了。