求助:MapX图元绘制问题

问题描述

我需要根据数据库的更新来刷新地图上点的位置,之前跌跌撞撞的也算是实现了点的显示,但现在又搞不下去了。因为一直没搞懂DataSets和BindLayer怎么用,所以只能是通过Layers.CreateLayer和Layers._item().AddFeature()来实现点的描绘。现在需要比对数据库,将位置发生变化的点画在新位置,并删掉旧位置上的点。我设置了一个Refresh按钮,代码如下:void_fastcallTForm1::Button6Click(TObject*Sender){double*tmp_long=newdouble[1000];double*tmp_lat=newdouble[1000];longinttmp_ID=0;inti,j;ADODataSet1->Active=false;ADODataSet1->CommandText="select*fromMyTab";ADODataSet1->Active=true;ADODataSet1->First();CMapXFeature*fNewSymbol;CMapXPointDisppt;CMapXStyleDispstyle;pt.Bind(StrignToOleStr("MapX.Point.5"));style.Bind(StrignToOleStr("MapX.Style.5"));style=Map1->DefaultStyle;fNewSymbol=NULL;fNewSymaol=Map1->FeatureFactory->CreatSymbol(EmptyParam,EmptyParam);for(i=0;i<count;i++)//count为数据库中的记录条数,全局变量{tmp_ID=ADODataSet1->FieldByName("ID")->AsInteger;tmp_long[i]=ADODataSet1->FieldByName("longitude")->AsFloat;tmp_lat[i]=ADODataSet1->FieldByName("latitude")->AsFloat;ADODataSet1->Next();for(j=0;j<count;j++){if(ID[j]==tmp_ID)//以下的ID,longitude[],latitude[]为数据库发生变化前的值,均为//全局变量我想通过ID来比对同一个点是否发生位置变化{if((longitude[j]!=tmp_long[i])||(latitude[j]!=tmp_lat[i])){pt->Set(longitude[j],latitude[j]);fNewSymbol->Set_Point(pt);fNewSymbol->Set_Style(style);AnsiStringstr=fNewSymbol->FeatureKey;Map1->Layers->_Item(Variant(1))->DeleteFeature(Variant(str));//_Item()为Layers.CreateLayer的一个临时图层,我想通过重新指定点//然后删除,可是运行时这里会报错。(编译已通过)pt->Set(tmp_long[i],tmp_lat[i]);fNewSymbol->Set_Point(pt);fNewSymbol->Set_Style(style);AnsiStringstr=fNewSymbol->FeatureKey;Map1->Layers->_Item(Variant(1))->AddFeature(Variant(str));}}}}}纯粹赶鸭子上架,BCB下的MapX编程确实用得人比较少,不过和其他语言的思路应该都一样,请熟悉的人教教,感谢。另外,当点比较多的时候画点比较慢,有什么办法可以提高速度

时间: 2024-09-20 08:19:45

求助:MapX图元绘制问题的相关文章

求助mapx按经纬度打点的问题

问题描述 我用mapx在地图上按经纬度打点,可是老是出现偏离的现象.就是说我按北京的经纬度ftr.GetPoint().Set(117.1,39.2);加的图元,可是程序运行后的点都偏离北京好远,快跑到天津.嘿嘿,请高手指导一下,这是什么原因.下面附上我的代码.m_ctrlMapX.GetLayers().CreateLayer("tielu",NULL,1);CMapXLayerslayers=m_ctrlMapX.GetLayers();CMapXFeatureftr=m_ctrl

图元合并问题

问题描述 请问,用vb编写mapx图元合并怎么做?有懂的高手请给个思路啊

《OpenGL编程指南(原书第9版)》——3.4 OpenGL的绘制命令

3.4 OpenGL的绘制命令 大部分OpenGL绘制命令都是以Draw这个单词开始的.绘制命令大致可以分为两个部分:索引形式和非索引形式的绘制.索引形式的绘制需要用到绑定GL_ELEMENT_ARRAY_BUFFER的缓存对象中存储的索引数组,它可以用来间接地对已经启用的顶点数组进行索引.另一方面,非索引的绘制不需要使用GL_ELEMENT_ARRAY_BUFFER,只需要简单地按顺序读取顶点数据即可.OpenGL当中,最基本的非索引形式的绘制命令就是glDrawArrays().void g

《OpenGL编程指南》一3.4 OpenGL的绘制命令

3.4 OpenGL的绘制命令 大部分OpenGL绘制命令都是以Draw这个单词开始的.绘制命令大致可以分为两个部分:索引形式和非索引形式的绘制.索引形式的绘制需要用到绑定GL_ELEMENT_ARRAY_BUFFER的缓存对象中存储的索引数组,它可以用来间接地对已经启用的顶点数组进行索引.另一方面,非索引的绘制不需要使用GL_ELEMENT_ARRAY_BUFFER,只需要简单地按顺序读取顶点数据即可.OpenGL当中,最基本的非索引形式的绘制命令就是glDrawArrays().void g

类似画图板的小程序

最近做了一个类似Windows画图板的小程序,拿来和大家分享一下.功能和界面全部模仿于Windows自带的画图板,界面如截图.功能主要有: 手绘线.简单图形.文字输入.图块拖放.重复撤销.画面缩放.打开保存图片文件,另外为了直接从数据库或者XML中存取图片,另外还提供了从Base64编码存取图片的接口,其他还实现了和画图板同样效果的工具箱及颜料盒. 1.绘图: 绘制功能主要在OnLButtonDown.OnMouseMove.OnLButtonUp中实现,根据当前选择的工具和工具的样式进行绘制.

类似画笔的绘图控件

源代码运行效果图如下: 想必大家都用过WINDOWS自带的画笔,这是一个小巧易用的软件.在业余时间,我模拟画笔自己开发了一个类似的程序(当然不如画笔那么功能丰富).它主要完成的功能有画直线.曲线.圆.椭圆.矩形.多边形:支持剪贴板的操作:支持撤销.重复:保存成位图文件:打开位图文件.这个例子是用MFC开发的,为了方便使用,最后将转换成控件. 建立单文档工程Demo,下面将分四部分介绍相关功能的实现.  一. 绘图功能 本程序包含多种图元:直线.曲线.圆.椭圆.矩形等,使用不同的图元类实现,这些图

移动信息化安全解决方案VMI、MDM剖析

背景: 在移动互联的浪潮中,手机移动办公凭借其便捷性成为时代的潮流和趋势,但是在实施过程中却面临诸多信息安全问题,让很多企业望而却步.与PC办公相比,其安全威胁主要来自以下几个方面: 首先是网络安全问题;移动设施连接的网络不像PC设备相对固定,其连接网络却是五花八门,可能是移动运营商的3G.4G网络,也可能是公司.家里.公共场合的WIFI网络,还可能是一些钓鱼WIFI.伪基站网络,这其中危机四伏,黑客们可以轻易的通过DNS域名解析或ARP欺骗等手段轻易地获取涉密信息.近几年公安部侦破的网络诈骗案

UIDesigner 3.0架构设计总结

UIDesigner是腾讯用户研究与体验设计部(CDC)设计研发的一款设计类软件,打造一款可以让设计师统一平台和团队协作的平台型设计工具,经过1.0和2.0版本的经验沉淀,我们决定对3.0版本进行全新的架构设计. 开发一个软件系统,前期的架构设计承载着整个软件的设计思想和关键决策,可以说是重中之重. 根据软件架构设计思想,关注分割和交互,好的架构必须使每个关注点相互分离.我们进行了最基本的需求分析,得出两个关注点:一是工具,二是设计绘图,关系如图1所示. 得到最基本的两个关注点后,接着将提取关键

C# Winform GDI大量数据(几万个数据)绘图刷新问题

问题描述 做一个项目,使用C#GDI画图,以达到可视化目的,使用自定义的控件,整个控件通过CreateGraphics()来绘图,数据存放在DataTable有几万行的数据,需要用多列(有十几列,根据不同需要来决定使用不同的列绘图)来绘图,使用GDI如下:publicvoidPaintGraph(RectangledrawRectangle){lock(refresh_lock){BufferedGraphicsContextcurrentContext=BufferedGraphicsMana