MapXtreme开发经验分享——添加自定义工具

MapXtreme的自带帮助的查找功能不好,不支持中文,网上的例子也比较少。把自己解决的几个问题拿出来与大家共享,希望有帮助!

 

开发环境:VB.NET 2008 + MapXtreme2008

 

1、添加自定义工具

没有使用mapxteme 提供的ToolBar控件,自己定制可交互的工具添加到自己的写的框架上,例子为管线剖面图工具,需要先在地图上绘制一条线,然后通过计算和这条线相交的所有管线的剖面信息,将剖面图绘制到弹出的对话框上。

 

1)    声明工具

    Private m_SectionTool As MapInfo.Tools.MapTool

 

2)   添加工具

 

      
        Dim insertionLayerFilter As IMapLayerFilter = MapLayerFilterFactory.FilterByLayerType(LayerType.Normal)

        ' Set the default style for the new objects (red fill with blue border).
        Dim style As MapInfo.Styles.CompositeStyle = New MapInfo.Styles.CompositeStyle()
        Dim addMapToolProperties As MapInfo.Tools.AddMapToolProperties = New MapInfo.Tools.AddMapToolProperties( _
                                MapLayerFilterFactory.FilterForTools(MapControl1.Map, insertionLayerFilter, _
                                MapLayerFilterFactory.FilterVisibleLayers(True), _
                                 "CustomPolygonAddMapToolProperties", Nothing), style)

        ' Create an Add polygon tool with non-default properties.
        m_SectionTool = New MapInfo.Tools.CustomLineMapTool(True, True, True, _
        MapControl1.Viewer, MapControl1.Handle.ToInt32(), MapControl1.Tools, _
        MapControl1.Tools.MouseToolProperties, MapControl1.Tools.MapToolProperties)

        ' Add it to the MapTools collection.
        MapControl1.Tools.Add("SectionTool", m_SectionTool)

 

3) 注册工具事件

 

    Public Sub New()

    
        AddHandler MapControl1.Tools.Used, AddressOf ToolUsed '工具事件

    End Sub

 

4)响应工具消息

 

   Public Sub ToolUsed(ByVal sender As Object, ByVal e As MapInfo.Tools.ToolUsedEventArgs)



        Select Case e.ToolName
            Case "SectionTool"  '断面工具

 

        End Select


    End Sub

 

5)发现一个例外:自定义工具使用 AddPointMapTool 不能触发used事件。

解决方法:可以使用CustomPointMapTool 代替,AddPolylineMapTool也同理。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值