GMap.NET加载google地图简单demo

2016-06-07 11:20:05  访问(1995) 赞(0) 踩(0)

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using GMap.NET.WindowsForms;
using GMap.NET.MapProviders;
using GMap.NET;
using GMap.NET.WindowsForms.Markers;
using GMapDemo.Classes.ThreadClasses;
using System.Threading;

namespace GMapDemo
{
    public partial class MainForm : Form
    {
        GMapOverlay gMapOverlay = null;

        public MainForm()
        {
            InitializeComponent();

            toolStripComboBox1.Text = "110.458457966533/19.9400473726004";

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

            mapControl1.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存文件所在位置
            mapControl1.MapProvider = GMapProviders.GoogleChinaSatelliteMap;
            mapControl1.MinZoom = 10;
            mapControl1.MaxZoom = 24;
            mapControl1.Zoom = 14;
            mapControl1.ShowCenter = true;
            mapControl1.DragButton = System.Windows.Forms.MouseButtons.Left;
            mapControl1.Position = new PointLatLng(19.939557,110.446125);
            mapControl1.MouseClick += new MouseEventHandler(mapControl_MouseClick);

              gMapOverlay = new GMapOverlay("mark");  //创建图层  

            mapControl1.Overlays.Add(gMapOverlay);  //向控件中添加图层  
        }

        void mapControl_MouseClick(object sender, MouseEventArgs e)
        {
            if (e.Button == System.Windows.Forms.MouseButtons.Right)
            {
                PointLatLng point = mapControl1.FromLocalToLatLng(e.X,e.Y);
                String show = String.Format("Lat={0:00.000000},Lng={1:000.000000}",point.Lat,point.Lng);
                MessageBox.Show(show,"CurrentLocation",MessageBoxButtons.OK);

                Clipboard.SetText(point.Lng.ToString() + "/" + point.Lat.ToString());
            }
        }

        private void groupBox1_Enter(object sender, EventArgs e)
        {

        }

        protected double GetXY(string str, bool isX)
        {
            int idx = str.IndexOf('/');

            if (isX)
                return double.Parse(str.Substring(0, idx));
            else
                return double.Parse(str.Substring(idx + 1));
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            //创建图层(overlay)和标签(marker),将标签加入图层,再将图层加入控件中  
            try
            {
                double dX = 0;
                double dY = 0;

                dX = GetXY(toolStripComboBox1.Text, true);
                dY = GetXY(toolStripComboBox1.Text, false);

                GMapMarker gMapMarker
                    =
                    new GMarkerGoogle(new PointLatLng(dY,dX),
                    GMarkerGoogleType.green);//在(45.7,126.695)上绘制一绿色点  
                gMapOverlay.Markers.Add(gMapMarker);  //向图层中添加标签  
               
            }
            catch (Exception er)
            {
                MessageBox.Show(er.Message);
            }
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            Form1 f = new Form1();

            f.Show();
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            SetAutoClosed(2000);
        }

 

        /// <summary>  
        /// 设置状态栏提示文字  
        /// </summary>  
        /// <param name="SleepTime"></param>  
        public void SetAutoClosed(int SleepTime)
        {
            if (SleepTime <= 0)
                return;

            DrawPointConfig config = new DrawPointConfig();
            config.SleepTime = SleepTime;

            try
            {

                BaseThreadClass bt = new BaseThreadClass();

                bt.data = config;

                bt.runName = new BaseThreadClass.ProcessRun(DoCloseThread);

                Thread execThread = new Thread(new ThreadStart(bt.RunProcess));

                execThread.IsBackground = true;
                execThread.Start();


            }
            catch // (Exception err)  
            {
                // ClientBAHelper.instance.ExcuteException(this, err);  
            }


        }


        /// <summary>  
        /// 执行关闭的线程  
        /// </summary>  
        /// <param name="objClass"></param>  
        private void DoCloseThread(object objClass)
        {
            try
            {
                DrawPointConfig config
                    =
                    objClass as DrawPointConfig;

                if (config == null)
                {
                    return;
                }

                for (int i = 0; i < 5; ++i)
                {
                    ThreadCloseForm(i);

                    System.Threading.Thread.Sleep(config.SleepTime);
                }
            }
            catch // (Exception err)  
            {

            }
            finally
            {

            }


        }


        /// <summary>  
        ///   
        /// </summary>  
        delegate void ThreadCloseFormCallback(int idx);


        /// <summary>  
        ///   
        /// </summary>   
        protected void ThreadCloseForm(int idx)
        {
            if (this.InvokeRequired)
            {
                ThreadCloseFormCallback d = new ThreadCloseFormCallback(ThreadCloseForm);

                this.Invoke(d, new object[] { idx });

                return;
            }

            string str = null;

            switch (idx)
            {
                case 0:
                    str = "110.463559627533/19.9369078001601";
                    break;
                case 1: str = "110.461258292198/19.9369380576852";
                    break;
                case 2: str = "110.466451048851/19.9364841942";
                    break;
                case 3: str = "110.464337468147/19.9374978208542";
                    break;
                case 4: str = "110.461966395378/19.9376995368253";
                    break;

            }

            double dX = 0;
            double dY = 0;

            dX = GetXY(str, true);
            dY = GetXY(str, false);

            GMapMarker gMapMarker
                =
                new GMarkerGoogle(new PointLatLng(dY, dX),
                GMarkerGoogleType.green);//在(45.7,126.695)上绘制一绿色点  

            gMapOverlay.Markers.Add(gMapMarker);  //向图层中添加标签  

        }  


    }
}


标签:GMap.NET加载google地图简单demo 

上一条:

下一条:


 

相关评论

评论加载中……
 

发表评论

类型:
内容:
  (Alt+Enter)