C# 操作Gmap简单使用方法

 
  其中数据坐标的查询,未添加进去!



        //控件声明,因为要自定义所以在代码里面写
        private GoogleChinaMapProvider goole;
        public static GMap.NET.WindowsForms.GMapControl gmap = new GMapControl();
        
        //构造函数初始化加载,因为这条功能加载速度非常慢(推测是因为在加载地图文件吧,屏幕越大加载速度越慢)
        public Form1()
        {
            new Thread(() => { test(); }).Start();
        }

        private void test()
        {

            goole = GMap.NET.MapProviders.GoogleChinaMapProvider.Instance;
        }

        /// <summary>
        /// 显示地图
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void gmap_Load(object sender, EventArgs e)
        {

             //图标文件位置
            string newstrAppDir = strAppDir + "//Resources//888.png";
            gmap.MapProvider = goole;
            /* 加载离线地图(待测试)
            String mapPath = Application.StartupPath + "\\Data.gmdb";
            gmap.CacheLocation = mapPath;
            gmap.Manager.Mode = AccessMode.CacheOnly;
            */
            gmap.DragButton = MouseButtons.Left;      //设置地图拖放使用鼠标按键
            GMap.NET.GMaps.Instance.Mode = GMap.NET.AccessMode.ServerOnly;
            gmap.MinZoom = 1;  //最小缩放  
            gmap.MaxZoom = 20; //最大缩放  
            gmap.Zoom = 12;     //当前缩放  
            gmap.ShowCenter = false; //不显示中心十字点  
            gmap.Position = new PointLatLng(34.261, 108.902); //地图中心位置

            List<string> listNodeNodes = new List<string>();  //根据数据库加载所对应的位置
            List<string> listX = new List<string>();
            List<string> listY = new List<string>();
            List<MyData> listNode = new List<MyData>();
            listNode = transfer.TransferQuery("作业区", "作业区名称", "作业区编号");
            for (int i = 0; i < listNode.Count; i++)
            {
                listNodeNodes = transfer.TransferWhereQuery("装置信息", "作业区编号", listNode[i].ID, 2);
                listX = transfer.TransferWhereQuery("装置信息", "作业区编号", listNode[i].ID, 6);
                listY = transfer.TransferWhereQuery("装置信息", "作业区编号", listNode[i].ID, 7);
            }

            double X, Y;
            GMapOverlay objects = new GMapOverlay("markers"); //放置marker的图层 
            if (listNodeNodes.Count != 0)
            {
                for (int i = 0; i < listNodeNodes.Count; i++)
                {

                    X = Convert.ToDouble(listX[i]);
                    Y = Convert.ToDouble(listY[i]);
                    GMarkerGoogle marker = new GMarkerGoogle(new PointLatLng(Y, X), new Bitmap(newstrAppDir));  //更改newstrAppDir 就可以自定义图标
                    marker.ToolTipText = listNodeNodes[i];  //自带的ToolTip控件(貌似可以设置控件的样式)
                    string imgPath = ini.ReadValue("图片设置", "图片路径:", strAppDir + "\\RetrunImg");
                    DirectoryInfo dir = new DirectoryInfo(imgPath);
                    dir.CreateSubdirectory(listNodeNodes[i]);
                    objects.Markers.Add(marker);
                    Form1.gmap.Overlays.Add(objects);
                }

            }

            /* 区域显示
            GMapOverlay polyOverlay = new GMapOverlay("polygons");
            List<PointLatLng> points = new List<PointLatLng>();
            points.Add(new PointLatLng(34.261, 108.892));
            points.Add(new PointLatLng(34.261, 108.922));
            points.Add(new PointLatLng(34.271, 108.922));
            points.Add(new PointLatLng(34.271, 108.892));
            GMapPolygon polygon = new GMapPolygon(points, "mypolygon");
            polygon.Fill = new SolidBrush(Color.FromArgb(50, Color.Red));
            polygon.Stroke = new Pen(Color.Red, 1);
            polyOverlay.Polygons.Add(polygon);
            gmap.Overlays.Add(polyOverlay);  */
        }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值