在DeepEarth中,地圖的拖放行為用於規範使用者在操作地圖的時候的選擇、移動和繪製等操作模型。 DeepEarth以枚舉結構將其封裝在地圖控制項(Map)的內部,原始碼如下:
程式碼
/// <summary>
/// 地圖拖放行為
/// </summary>
public enum DragBehavior
{
/// <summary>
/// 滑鼠成手型圖示點在地圖上拖放,地圖的呈現隨同滑鼠的拖曳進行移動並定位於滑鼠釋放的位置。
/// </summary>
Pan,
/// <summary>
///在地圖上透過選擇繪製出一個選框圖形,當滑鼠釋放選擇的時候將地圖放大級別顯示。
/// </summary>
Select,
/// <summary>
/// 在地圖上繪製圖形。
/// </summary>
Draw
}
在DeepEarth中的拖放行為預設被定義為滑鼠拖曳行為,當使用者在所呈現的地圖上操作地圖的時候,滑鼠成手型圖示點在地圖上拖放地圖,當滑鼠釋放拖曳並將地圖定位於滑鼠釋放拖曳的地圖位置。預設的拖放行為在原始碼中被定義為如下:
//地圖拖放行為
private DragBehavior _DragMode = DragBehavior.Pan;
上面對地圖的拖放行為進行了簡單的描述,下面我們來看看如何在開發中使用地圖的拖放行為,我們可以在介面上放置一個Button來做個實驗,透過點擊按鈕實現切換地圖拖放行為的功能:
程式碼
/// <summary>
/// 改變地圖的拖放行為
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void btnDragBehavior_Click(object sender, RoutedEventArgs e)
{
//判斷目前地圖的拖放模式--實現兩種模式之間切換
switch (mapInstance.DragMode)
{
case Map.DragBehavior.Pan:
mapInstance.DragMode = Map.DragBehavior.Select;
ToolTipService.SetToolTip(btnDragBehavior, "切換到選擇放大模式");
btnDragBehavior.Content = "選擇";
break;
case Map.DragBehavior.Select:
mapInstance.DragMode = Map.DragBehavior.Pan;
ToolTipService.SetToolTip(btnDragBehavior, "切換到拖曳平移模式");
btnDragBehavior.Content = "拖放";
break;
}
}