博客统计信息

51cto专家博客 51cto博客之星
用户名:beniao
文章数:142
评论数:349
访问量:322764
无忧币:3911
博客积分:6257
博客等级:8
注册日期:2008-05-25

DeepEarth中的拖放行为(DragBehavior)
2010-03-06 15:44:01
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://beniao.blog.51cto.com/389148/281380

  在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
;
    }
}
 
 
  上面代码块思路非常清晰,通过当前地图的拖放行为进行判断,交替设置地图的拖放行为,编译程序后运行效果如下图所示:
        
  
  按扭放在地图中间不太好看,我们可以通过上一篇《探索DeepEarth的内置控件》中所介绍的方法将拖放模式的切换触发功能按扭移置到功能导航菜单上去,这样整体看上去的感觉就大不一样了。
         
 
  这里改变了下界面布局,将原来直接适用按钮显示文字的方式更改为适用图片的方式, 通过不同的拖放行为来操作地图,此功能的切换实现非常方便、简单,但却非常适用。我们可以通过扩展地图的拖放行为实现很多功能,比如在地图上插标、选点、框选等复杂的操作,本文暂时不做介绍,在后续相关文章里在详细介绍如何实现这些功能。
 

本文出自 “beniao” 博客,请务必保留此出处http://beniao.blog.51cto.com/389148/281380

分享至
更多
一键收藏,随时查看,分享好友!
0人
了这篇文章
类别:Bing Maps/DE技术圈()┆阅读()┆评论() ┆ 推送到技术圈返回首页

文章评论

 
2010-03-09 10:55:34
目前在学习楼主Bing Maps系列,受益匪浅,谢谢楼主分享。
博主回复:
2010-03-11 13:00:40
谢谢支持。

2010-03-09 10:56:32
顶 跟着博主学map
博主回复:
2010-03-11 13:00:48
一起学习

2010-03-09 11:00:09
对了 问一句
DeepEarth能直接调用现成的地图开发吗?
博主回复:
2010-03-11 13:00:54
可以的。

 

发表评论            

【技术门诊】专家解析:软考重点难点及应试技巧
昵  称:
登录  快速注册
验证码:

请点击后输入验证码博客过2级,无需填写验证码

内  容: