基于SharpMap和DotNetBar的地图导航(地图缩放滑块)控件开发实践

本文介绍了如何基于SharpMap和DotNetBar的Slider控件开发地图导航控件,实现地图的缩放功能。通过继承和改造Slider控件,实现了地图与导航控件的交互同步,详细讲解了关键代码和逻辑,包括设置地图控件、级别和比例尺的处理方法。
摘要由CSDN通过智能技术生成

    因工作需要,最近想开发一个网络地图下载器,在编码的过程中想到以前谷歌、百度和现在的天地图、ArcGIS里面有一个地图导航控件,就尝试着自己做了一个。其实原理也简单,上下两个按钮,中间一个可上下移动的按钮,下面按钮缩小,上面按钮放大,中间跟随移动或鼠标按住上下拖动。先上图,我做出来的效果是这样的:

 

    这里面还有一个地方要注意,就是导航控件和地图的交互同步,缩放地图时导航控件中间的按钮要跟随上下移动,同样的操作导航控件时,地图要缩放到对应比例级别。

    回到具体实现上来,如果完全使用C#自带的东西设计一个用户控件肯定会复杂一些,有没有现成的控件,只要稍微改写一下就可以呢,答案是肯定的。想到以前用第三方UI控件库DotNetBar的时候有个Slider控件,很符合我们的要求,只要继承改造一下就可以。先上完整代码,等下再来说明。

    一、控件编码部分             

    1.控件(ZoomSlider.cs)源码:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Text;
using SharpMap;
using DevComponents.DotNetBar.Controls;
using System.Drawing;

namespace SharpMap.Forms
{
    /// <summary>
    /// 自定义地图滑块控件
    /// </summary>
    public partial class ZoomSilder : Slider
    {
        private MapBox mapBox;
        private List<MapZoom> zoomList;

        /// <summary>
        /// 缩放级别
        /// </summary>
        public List<MapZoom> ZoomList
        {
            get { return this.zoomList; }
        }

        /// <summary>
        /// 初始化设置
        /// </summary>
        public ZoomSilder()
        {
            InitializeComponent();
            this.DoubleBuffered = true;
            this.SliderOrientation = DevComponents.DotNetBar.eOrientation.Vertical;
            this.LabelVisible = false;
            this.Width = 20;
            this.Height = 100;
        }

        /// <summary>
        /// 设置背景透明
        /// </summary>
        public void SetBackgroundTranspa
  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值