网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
用VC++实现矢量地图背景下的实时显示
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
结束部分添加如下代码:

/////////////////定义mapinfo中所用的变量
mapinfo.Do("Dim obj1 As Object"); file://飞机图标点对象
mapinfo.Do("Dim Line1 As Object"); file://航迹线对象
global_num = 0; file://接收目标数据计数初始化为0

  在CmapAppView:: ShowMapLine()函数代码如下:

  程序清单3 MapAppView.cpp文件

void CMapAppView::ShowMapLine()
{
char str[256];
file://画飞机图标
double m_angle = COPI*atan2((global_lat - global_lat_last),
(global_long - global_long_last))-90;//目标角度
sprintf(str,
"Create Point Into Variable obj1 (%lf,%lf) Symbol (85,255,30,\"MapInfo Transportation\",0,%lf)",
global_long, global_lat, m_angle); file://设置飞机目标显示的样式
mapinfo.Do(str); file://创建目标图标对象
if (global_num >0 )
{/*收到的第一点,在plane表中插入第一条记录,后面的点都是更新第一条记录*/
sprintf(str,
"Update plane Set Obj = obj1 Where RowID = %lu",1);}
else {
sprintf(str,
"Inset Into plane (ID,Obj) Values (%lu,Line1) ", global_num);
}
mapinfo.Do(str);//用obj1对象更新表中的记录
file://画各设备的航迹
sprintf(str,
"Create Line Into Variable Line1 (%lf,%lf) (%lf,%lf) Pen MakePen(2,2,255)",
global_long_last, global_lat_last , global_long, global_lat);
mapinfo.Do(str);//创建line1对象
if (global_num >0 )
{//第一个点不画航迹
sprintf(str,"Fetch Last From plane");
mapinfo.Do(str);
file://插入line1到表中
sprintf(str,"Insert Into plane (ID,Obj) Values (%lu,Line1)",global_num);
mapinfo.Do(str);
}
global_num ++;
}

  6. 编译运行软件,

  要保存plane表,可在CmapAppView类的析构函数中添加下面的代码:

  程序清单4 MapAppView.cpp文件

CMapAppView::~CMapAppView()
{
char str[256];
if (m_hWindowHwnd) file://地图窗口存在
{
sprintf(str,"Close Window %lu",m_lWindowid);
mapinfo.Do(str);
m_hWindowHwnd = NULL;
m_lWindowid = 0L;
mapinfo.Do("Commit Table plane");//保存实时航迹表
}
}

  左屏显示内容的构造,可根据各软件系统的要求,显示数据,图表等,由VC++编程实现。

  三、 其它说明

  上面程序清单2中

sprintf(str,"Add Map Window %lu Layer plane Animate",m_lWindowid);

  语句中的Animate属性一定要有,这表示将plane图层设置为动态(Animate)图层,每个地图窗口只能有一个动态图层,当这个图层上的对象变化时,地图窗口只刷新此图层,以便可以实现快速刷新。

  在应用OLE技术嵌入地图窗口的应用中,还可根据需要加入多种工具,用于地图信息的修改和查询,如标尺窗口,信息窗口,图层控制,图层选择编辑等,但在实时接收数据并显示的状态下,有些功能的使用将会导致访问冲突,以致程序出错,如图层控制、图层编辑等,原因是实时数据正在对plane表进行编辑,此时再改变其它图层,就与mapInfo一次只能编辑一个图层的原则产生了冲突。

  • 下一篇资讯: 快速实现MFC类浏览器
  • 网学推荐

    免费论文

    原创论文

    浏览:
    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
    湘ICP备09003080号