模块测试(一)----c#控制html中的数据(GMap)

16 篇文章 4 订阅

项目地址: https://github.com/SCFMVP/final_01


一. 配置GMap

我们先去官网下载GMap的工程文件: https://archive.codeplex.com/?p=greatmaps

 然后我们我们编译GMap.NET.WindowsForms工程, 生成GMap.NET.Core.dll和GMap.NET.WindowsForms.dll

然后添加到我们的工程中.(PS: 这里需要注意我们的工程框架要在3.5以上, 还有特别重要的一点, 我们应用的这两个dll文件都是在GMap.NET.WindowsForms工程下的)

然后在我们的c#工程里新建一个用户控件类, 命名为MapControl

 文件继承于GMapControl类

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GMap.NET.WindowsForms;

namespace cs_var_toHtml
{
    public partial class MapControl : GMapControl
    {
        public MapControl()
        {
            InitializeComponent();
        }

        private void MapControl_Load(object sender, EventArgs e)
        {

        }
    }
}

这样我们编译一下这个工程, 然后我们就可以在我们的工具箱 里找到MapControl控件进行使用了.

二.使用GMap.NET进行操作

图标闪动, 自定义图标, 移动图标等: http://www.cnblogs.com/luxiaoxun/p/3475355.html

(1) 初始化(中心位置, 分辨率, 去十字图标)

try
            {
                System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("ditu.google.cn");
            }
            catch
            {
                mapControl1.Manager.Mode = AccessMode.CacheOnly;
                MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            mapControl1.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置
            mapControl1.MapProvider = GMapProviders.GoogleChinaMap; //google china 地图
            mapControl1.MinZoom = 2;  //最小比例
            mapControl1.MaxZoom = 24; //最大比例
            mapControl1.Zoom = 15;     //当前比例
            mapControl1.ShowCenter = false; //不显示中心十字点
            mapControl1.DragButton = System.Windows.Forms.MouseButtons.Left; //左键拖拽地图
            mapControl1.Position = new PointLatLng(31.7508319669, 119.9192261696); //地图中心位置:江理工图书馆

            mapControl1.Overlays.Add(markersOverlay);

            mapControl1.MouseClick += new MouseEventHandler(mapControl_MouseClick);

(2) 鼠标操作

右击标绿点

void mapControl_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                PointLatLng point = mapControl1.FromLocalToLatLng(e.X, e.Y);
                GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
                markersOverlay.Markers.Add(marker);
            }
        }

(3) 打点方法

//将字符串组LatLngInfo的点打标记,经纬度中用','隔开, 把点的颜色也写成形参
        public void SetLableOnMap(string[] LatLngInfo)
        {
            //创建图层  
            GMapOverlay gMapOverlay = new GMapOverlay();
            //给每个坐标打点
            for (int i = 0; i < LatLngInfo.Length; i++)
            {
                string[] LatLng = LatLngInfo[i].Split(',');
                //在坐标点上绘制一绿色点并向图层中添加标签 
                gMapOverlay.Markers.Add(new GMarkerGoogle(new PointLatLng(double.Parse(LatLng[1]), double.Parse(LatLng[0])), GMarkerGoogleType.red));
                //方便之后寻找到是第几个GMapMarker   
                gMapOverlay.Markers[i].Tag = i;
                gMapOverlay.Id = "markroad";
            }
            //向控件中添加图层  
            mapControl1.Overlays.Add(gMapOverlay);
        }

 调用:

//------------调用打点函数---------------//
            string[] LatLngInfo=new string[2];
            LatLngInfo[0] ="12,12";   //第一个经纬度
            LatLngInfo[1] = "12,13";  //第二个经纬度
            SetLableOnMap(LatLngInfo);

(4) 区域

添加多边形(不准确, 在找原因)

//在地图上画矩阵,知道矩阵上下左右(Lat_top、Lat_bottom、Lng_left、Lng_right)的4个点
GMapOverlay polyOverlay = new GMapOverlay("polygons");
            List<PointLatLng> points = new List<PointLatLng>();
            //注意添加点的顺序
            points.Add(new PointLatLng(Lat_top, Lng_left));          
            points.Add(new PointLatLng(Lat_bottom, Lng_left));
            points.Add(new PointLatLng(Lat_bottom, Lng_right));
            points.Add(new PointLatLng(Lat_top, Lng_right));
            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);

(5) 路线

(6) 提示

(7)文字标签(看打点方法里也有)

//--------------加一个闪烁点&  文字标签---------------//
        public void PointShark(double Lat, double Lng, string label)
        {
            GMapOverlay gMapOverlay = new GMapOverlay();
            PointLatLng point = new PointLatLng(Lat,Lng);
            gMapOverlay.Markers.Add(new GMarkerGoogle(point, GMarkerGoogleType.red));
            GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green);
            marker.ToolTipText = label;       //这是标签
            marker.Tag = 1;
            marker.ToolTipMode = MarkerTooltipMode.Always;
            gMapOverlay.Markers.Add(marker);   //这一句话也很关键!!!!, 不然不显示标签
            mapControl1.Overlays.Add(gMapOverlay);//添加图层, 只有添加才会显示我们需要的点
        }

三. 结果及参考文章

PS上面为写的方法在下面这个博文里又有, 博主有一些列的GMap的博文, 很有帮助

http://www.cnblogs.com/luxiaoxun/p/3475355.html

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值