MapX使用数据库数据添加专题图(系列之三)
2008-04-30 09:53
495 查看
本文描述了在MapX中添加专题图的方法,其中 MapX中关于添加专题图的过程语法描述如下(介于英语水平太高,能认识的英文字母大概还有二十多个,实在不愿意打开金山词霸给大家进行高质量的翻译,哈哈):
OBJECT.Add([Type],[Field],[Name],[ComputeTheme])
OBJECTRepresentsaThemesobject.
TypeSpecifiesthetypeofthematicmaptocreate.ThistakesaThemeTypeConstantsvalue.Thisisanoptionalparameter,andifnotspecified(orspecifiedasmiThemeAuto),MapXwillattempttochooseagooddefaultbasedonthenumberoffieldspassedinaswellaswhatotherthemetypesarealreadybeingdisplayed.If MapXcannotchooseadefaultthemetype,anerrorisgenerated.
Field(s)Specifiesthefieldorfieldstothematicallymap.Afieldcanbespecifiedbyname,index,orbyaFieldobject.Ifyouarecreatingathemeusingmultiplevariables(suchasabarchartorpiechart),passinaFieldscollectionoranarrayoffieldnames,indexes,orFieldobjects.Thisisanoptionalparameter,andifnotspecified,MapXusesthefirstnumericfieldoftheDataset.
NameSpecifiesthenameofthethematicmap.ThisisaStringparameter.Thisisanoptionalparameter,andifnotspecified,MapXgeneratesanamesuchasStatesBySales.
ComputeThemeBoolean.ThedefaultvalueisTruewhichwillcalculatethethemefromthetabledata.IfthevalueissettoFalseaninvisiblethemeobjectwillbecreatedwith10rangesforIndividualValuethemesand5rangesforRangedthemes.YoucanthenmanuallysettheminimumandmaximumvaluestodefinethethemewithTheme.DataMinandTheme.DataMax.Forrangedthemesyoucanmanuallysetthethemerangesorcalculateequalsizerangesdeterminedbytheminimum(Theme.DataMin)andmaximum(Theme.DataMax)values.
关于专题图的风格共有以下几种:
miThemeRanged=0
miThemeBarChart=1
miThemePieChart=2
miThemeGradSymbol=3
miThemeDotDensity=4
miThemeIndividualValue=5
miThemeAuto=6
miThemeNone=9
具体都是什么样,请自己写代码看看,哈哈
下面是我写的部分代码:
unitMain;
interface
uses
Windows,Messages,{略去一部分}SysUtils,Variants,Classes;
type
TfrmMain=class(TForm)
mapMain:TMap;{地图控件}
private
{Privatedeclarations}
ThemesList:TStringList;{用来保存多个专题图的名称列表}
public
{Publicdeclarations}
procedureToAddThemes(style:integer;TheName:string);{添加专题图}
procedureToDeleteThemes;{删除专题图}
end;
var
frmMain:TfrmMain;
implementation
{$R*.dfm}
{略去其他功能代码}
{
添加专题图,参数style表示专题图风格,TheName表示图例标题
}
procedureTfrmMain.ToAddThemes(style:integer;TheName:string);
functionDefaultName:string;{用来生成一唯一的名称}
begin
{我用的方法是取一个当前时间,两次调用本函数的时间间隔应该不会少于0.5秒,
所以这个方法在这个项目中可以取得唯一的名称}
Result:='YYT'+FormatDateTime('YYYYMMDDHHNNSSzzz',now);
end;
var
flds:arrayofstring;{字段列表}
oBLayer:BindLayer;{绑定图层}
ds:Dataset;{MapX数据集}
i:integer;{循环变量}
thm:theme;{MapX专题图}
str:string;{用于保存字符串}
begin
{aqThemes可以是一个ADOQuery或者ADOTable,我使用的是ADOQuery。
在这个ADOQuery中前四个字段分别是:
ID(唯一的数字或者字符串,一般为编号),
NAME(字符串,要素的标签),
X(浮点数,要素的经度或者横坐标),
Y(浮点数,要素的纬度或者纵坐标)。
后面的其它字段都是数字类型,用来表示相关的数据。
◎请参考我的文章《从数据库绘制MapX图层(二)》,
url是http://dev.csdn.net/article/31/31719.shtm
}
ifnotaqThemes.Activethen
begin
dmData.GiveMsg('系统基础表没有打开!');
exit;
end;
try
{取一个唯一的名字,}
str:=DefaultName;
{设置绑定图层的属性}
oBLayer:=coBindLayer.Create;
progress.StepPlus(2);
oBLayer.LayerName:=str;
oBLayer.LayerType:=miBindLayerTypeXY;
oBLayer.RefColumn1:='X';
oBLayer.RefColumn2:='Y';
{下面的调用和我在《从数据库绘制MapX图层(二)》使用的方法一样,
请参考我的那篇文章,url是http://dev.csdn.net/article/31/31719.shtm}
ds:=mapMain.Datasets.Add(12,
aqThemes.Recordset,
str,
'ID',
EmptyParam,
oBLayer,
EmptyParam,
EmptyParam);
{组织专题图现实的数据字段,存储在字符串数组中}
SetLength(flds,aqThemes.Fields.Count-3);
fori:=3toaqThemes.Fields.Count-1do
begin
flds[i-3]:=aqThemes.Fields.Fields[i].FieldName;
end;
{实际添加专题图的过程}
thm:=ds.Themes.Add(style,flds,DefaultName,EmptyParam);
{设置专题图图例标题}
thm.Legend.Title:=TheName;
{记录新添加的专题图名称}
ThemesList.Add(str);
{btnDeleteThemes是一个在本窗口上的按钮,用来删除专题图,
添加专题图后就将他显示出来,如果删除了全部专题图就将他隐藏}
btnDeleteThemes.Visible:=true;
except
GiveMsg('创建专题图失败!');{自定义过程,给出出错提示}
end;
end;
{
删除专题图,我采用的方法是删除所有专题图
}
procedureTfrmMain.ToDeleteThemes;
var
i:integer;{循环变量}
begin
fori:=0toThemesList.Count-1do{循环所有添加了的专题图}
begin
{删除数据集}
mapMain.Datasets.Remove(ThemesList.Strings[i]);
{删除专题图}
mapMain.Layers.Remove(ThemesList.Strings[i]);
{如果只想删除某一个专题图,不用循环就行了}
end;
{此时已经没有专题图了,将删除专题图按钮隐藏}
btnDeleteThemes.Visible:=false;
{清除专题图名称列表}
ThemesList.Clear;
end;
//...
end.杨雨田
相关文章推荐
- MapX使用数据库数据添加专题图(系列之三)
- MapX使用数据库数据添加专题图(系列之三)%A
- MapX使用数据库数据添加专题图(系列之三)
- Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
- 【IOS开发基础系列】OC基础数据类型使用专题
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库的实现代码
- Spring Boot干货系列:(八)数据存储篇-SQL关系型数据库之JdbcTemplate的使用
- Spring Boot干货系列:(九)数据存储篇-SQL关系型数据库之MyBatis的使用
- listview动态添加数据,使用sqlite对本地数据库增删改查
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库
- MapX系列-- 使用LayerInfo object 在map中添加栅格图层
- java 演示使用jdbc-odbc桥连接的方式操作数据库 向数据库中添加数据
- 使用MySQL Workbench建立数据库,建立新的表,向表中添加数据
- appserv中使用mysql时向数据库中添加数据时报错
- 巧妙使用JQuery Clone 添加多行数据,并更新到数据库
- 使用Hibernate向数据库中添加数据
- 使用SSH添加数据时执行了SQL语句数据库却什么都没有?
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 地磅称量系统之(37~39) 直接向数据库的数据表WtBill添加测试数据以及绑定用户控件和使用编码的方式控制dataGridView控件的每列属性和添加数据数据库的表中不存在的字段(非绑定列)