【Silverlight】 Bing Maps开发应用与技巧五:实现图钉(Pushpin)的可拖放性

【Silverlight】 Bing Maps开发应用与技巧五:实现图钉(Pushpin)的可拖放性(Draggable)扩展

目前在Bing Maps Silverlight Control中并没有提供可拖放的图钉(Pushpin)控件,其强大、灵活的架构设计为开发者提供了非常强大的扩展支持,要实现图钉控件的可拖放性可以自己动手进行扩展实现。

System.Object
    System.Windows.DependencyObject
      System.Windows.UIElement
        System.Windows.FrameworkElement
          System.Windows.Controls.Control
            System.Windows.Controls.ContentControl
             Microsoft.Maps.MapControl.Pushpin

在扩展Pushpin之前先了解下Pushpin控件在Bing Maps Silverlight Control中的结构设计(如上代码结构),Pushpin是通过扩展Silverlight中的ContentControl控件开发而成,并加入了了定位坐标(Location)属性及其它相关的属性、字段。鉴于图钉的定位主要会用到Location属性,故本篇只提出此属性,其他的字段属性的详细在后续的相关博文里介绍。

在使用Bing Maps Silverlight Control开发中,使用内置提供的图钉(不提供可拖放操作功能)主要有两种方式,分别是后台代码动态创建后作为子对象添加到MapLayer上,另外一种方式则是直接在XAML代码里直接配置。如下代码块:

<m:Map x:Name="myMap" Margin="0,0,0,0" CredentialsProvider="{StaticResource MyCredentials}">
   <m:MapLayer x:Name="MapLayer">
     <m:Pushpin Location="29.5076372217973, 106.489384971208" Content="D"></m:Pushpin>
  </m:MapLayer>
</m:Map>

通过上代码段的结构很清晰的知道,图钉控件(Pushpin)的父节点为MapLayer对象,在MapLayer中有一个属性 ParentMap可以得到当前MapLayer对象属于那一个Map控件对象,于是在图钉对象上既然能够获取到直接所属的Map控件,也就是说在图钉控件里是可以对Map控件进行动态控制的。

接下来就通过自定义一个可拖拽的图钉类来对Bing Maps Silverlight Control中内置的图钉控件进行扩展,可以通过如下的代码来实现一个最基本的可拖放的图钉的结构。

public class DraggablePushpin : Microsoft.Maps.MapControl.Pushpin
{
     /// <summary>
     /// 是否正在拖放
     /// </summary>
     private bool IsDragging = false;
     /// <summary>
     /// 鼠标拖放
     /// </summary>
     private EventHandler<MapMouseDragEventArgs> MapMouseDragHandler;
     /// <summary>
     /// 鼠标左键弹起
     /// </summary>
     private MouseButtonEventHandler MapMouseLeftButtonUpHandler;
     /// <summary>
     /// 鼠标移动
     /// </summary>
     private MouseEventHandler MapMouseMoveHandler;
}

时间: 2024-11-01 04:03:43

【Silverlight】 Bing Maps开发应用与技巧五:实现图钉(Pushpin)的可拖放性的相关文章

【Silverlight】 Bing Maps开发应用与技巧六:使用样式美化图钉(Pushpin)控

[Silverlight] Bing Maps开发应用与技巧六:使用样式美化图钉(Pushpin)控件的ToolTip外观 在使用Bing Maps Silverlight Control进行Bing Maps开发中,图钉(Pushpin)标注控件的使用频率是非常之高,多数情况下都会使用其ToolTip特性来呈现一些数据信息,但默认的 ToolTip外观并不完美,显得格外的难看.于此需要开发者自己实现其漂亮的外观界面,本篇将由浅入深的带你走入图钉(Pushpin)控件的 ToolTip外观美化之

【Silverlight】 Bing Maps开发应用与技巧三:Bing Maps Silverlight Control

[Silverlight] Bing Maps开发应用与技巧三:Bing Maps Silverlight Control的离线开发 我相信大多数使用Bing Maps开发的朋友都见过如下的画面,就是当我们在开发Bing Maps的时候,将开发KEY填写错误导致用户授权验证失败出现的下图提示错误. 使用Bing Maps Silverlight Control开发的缺点就在于它默认是使用的微软自己提供的在线地图数据,而且Bing Maps Silverlight Control还与开发者账号进行

【Silverlight】Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPa

[Silverlight]Bing Maps开发应用与技巧二:自定义图钉标注控件和动态ToolPanel 在Bing Maps Silverlight Control中以及为我们提供了地图图钉控件Pushpin,我曾经在<使用图钉层(Pushpin layer)及地图图层(MapLayer)>一文中介绍过他的使用方法,本篇主要介绍如何自定义图钉标注控件以及对他的一些扩展,比如实现图钉的动态ToolPanel. 关于图钉的UI外观的设计这里就不详细介绍了,通过Blend可以快速的构建UI界面.首

【Silverlight】Bing Maps开发应用与技巧一:地图打点与坐标控件(CoordContr

[Silverlight]Bing Maps开发应用与技巧一:地图打点与坐标控件(CoordControl) 使用Bing Maps Silverlight Control开发中,很多时候都需要实现在的地图上打点的功能,也就是通过鼠标点击事件处理当前地图上点击点添加一个标注(比如图钉),主要使用 ViewportPointToLocation方法进行坐标转换,将鼠标所点击点的物理坐标转化为地理坐标(经度.纬度),该方法如下定义: [ScriptableMemberAttribute] publi

【Silverlight】 Bing Maps开发应用与技巧四:自定义MapMode实现地图访问限制

在某些情况下可能会出现只需要访问(加载)某块区域的地图显示,也可能需要对地图的缩放级别进行限制,或者只能让地图在5--10级之间进行深度缩放.要实现这些功能就需要通过自定义MapMode来实现了.本篇将为您介绍如何通过自定义MapMode来实现地图访问限制的常用方法与技巧. 首先需要了解下Bing Maps Silverlight Control的地图投影模式(MapMode)的架构模型,所有的地图投影模式都是根据投影抽象基类(MapMode)扩展而来.比如二维平面地图投影模式(FlatMapM

Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图

Bing Maps进阶系列五:通过DeepEarth的MiniMap控件为Bing Maps扩展迷你小地图 Bing Maps Silverlight Control虽然为我们提供了简洁.方便的开发模型,但也有许多不足之处,比如我们想实现一个迷你小地图功能,对于Bing Map Silverlight Control就没有这样的内置控件.但不必费心费神的自己去开发一个这样的控件来实现这个功能,因为在DeepEarth中已经为我们提供了这样一个控件,首先看看在Bing Maps(http://cn

SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储

原文:SQL Server 2008空间数据应用系列八:基于Bing Maps(Silverlight)的空间数据存储 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.具有使用 Microsoft Visual Studio 进行 Microsoft .NET Framework开发的经验. 4.具有

SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现

原文:SQL Server 2008空间数据应用系列七:基于Bing Maps(Silverlight) 的空间数据展现 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.具有使用 Microsoft Visual Studio 进行 Microsoft .NET Framework开发的经验. 4.具

基于DeepZoom技术的Bing Maps客户端实现研究

目前基于Silverlight技术的Web GIS客户端实现,包括微软Bing Maps Silverlight Control,以及开源的Web GIS客户端组件DeepEarth 项目,核心都是采用Silverlight中的DeepZoom技术实现.可能您已经知道 DeepZoom技术以MultiScaleImage控件为核心,其内部有一个 MultiScaleTileSource类型的源属性,主要用于设置 MultiScaleImage控件所要呈现的数据源,可以通过学习Deep Zoom