C# 高德JavaScrpt地图航迹-实时更新

C# 高德JavaScrpt地图航迹-实时更新_第1张图片

一、既然是地图,当然先在工具栏里,添加WebBrowser控件,由于还需要菜单,所以在属性里面设置为:None,然后添加好菜单,再在WebBrowser上,选择 在父容器中停靠。

C# 高德JavaScrpt地图航迹-实时更新_第2张图片

再加上一些代码。地图的效果就出来了。

C# 高德JavaScrpt地图航迹-实时更新_第3张图片

这里还要说明一下。地图是JavaScrpt的高德地图。代码如下:




	
	输入坐标添加点标记
	


    
	


还有一个图标,是本地目录下的。,plane.png自己用PS抠成了透明的。

二、程序代码:

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 System.Runtime.InteropServices;       //添加类对COM可见-ComVisibleAttribute(true)/

namespace demoTemp1
{
    [ComVisibleAttribute(true)]
    public partial class Form1 : Form
    {
        //开始绘制标识/
        bool isDraw = false;
        //定义结构体保存经纬度
        public struct LatLng
        {
            public double lat;
            public double lon;
        }
         LatLng latLng;// = new LatLng(wgsLat + dLat, wgsLon + dLon);
         

        public Form1()
        {
            InitializeComponent();
            //地图加载相对路径
            webBrowser2.Navigate(Application.StartupPath + "\\js.html");
            webBrowser2.ObjectForScripting = this;
            //地图的GPS位置,一定要精确到小数点6位,否则地图加载不完全/
            latLng.lat = 28.237137;
            latLng.lon = 112.868721;
        }

        private void startDrawToolStripMenuItem_Click(object sender, EventArgs e)
        {
            isDraw = true;
            //MessageBox.Show("isDraw = true;&&item click");
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            //地图航迹更新-定时器/
            System.Timers.Timer MapUpdateTime = new System.Timers.Timer(1000);//实例化Timer类,设置间隔时间为1000毫秒 就是1秒;
            MapUpdateTime.Elapsed += new System.Timers.ElapsedEventHandler(theout);//到达时间的时候执行事件;
            MapUpdateTime.AutoReset = true;//设置是执行一次(false)还是一直执行(true);
            MapUpdateTime.Enabled = true;//是否执行System.Timers.Timer.Elapsed事件;
        }
        //地图-定时器调用/
        public void theout(object source, System.Timers.ElapsedEventArgs e)
        {
            this.Invoke(new TextOption(MapUdate));//invok 委托实现跨线程的调用
        }

        delegate void TextOption();//定义一个委托
        //地图航迹更新-实际操作/
        void MapUdate()
        {
            if (isDraw == true)
            {
                object[] objects = new object[2];
                objects[0] = latLng.lon;
                objects[1] = latLng.lat;
                //drawLine      Messageae
                webBrowser2.Document.InvokeScript("drawLine", objects);
                //MessageBox.Show("Draw line");
                latLng.lat += 0.000005;
                latLng.lon += 0.000005;
             }
        }

        private void endDrawToolStripMenuItem_Click(object sender, EventArgs e)
        {
            isDraw = false;
        }
    }
}


C# 高德JavaScrpt地图航迹-实时更新_第4张图片

//注明:航迹的线条非常粗,是因为每次是绘制一小段线,而不是增加一个点。先到这里,作个笔记。

你可能感兴趣的:(C# 高德JavaScrpt地图航迹-实时更新)