在网上搜了很久都没有找到合适的帖子.
所以做这个花了很多时间精力,但总算解决了.
本来是想用多线程,委托之类的,但是由于需要刷新axMapControl,也就是需要传参数,搞的很狼狈(有时间再研究),还不知怎样通过自定义的多线程解决:在新创建的线程中对从数据库中查询出的结果(包含经纬度信息)进行处理:从第二个有效点(例如经纬度数值为零或负的无效)开始,跟其前一个有效点构成"线",加到axMapControl中并显示出来,以此类推,画出轨迹.
最终得知用Timer控件比较好,很容易的解决了.代码如下:
数据是从数据库中得出.要显示的符号是从文件中读取.
其实位置信息可以通过手动在axMapControl中点击获取,如下:
//用来存储坐标的类
public class LL
{
public double Longitude;
public double Latitude;
}
//获取点
public static IList<LL> phss = new List<LL>();
private void axMapControl1_OnMouseDown(object sender, IMapControlEvents2_OnMouseDownEvent e)
{
LL ll = new LL();
ll.Longitude = e.mapX;
ll.Latitude = e.mapY;
phss.Add(ll);
}