您的位置:首页 > 数据库

MapX使用数据库数据添加专题图(系列之三)

2008-04-30 09:53 495 查看
MapX使用数据库数据添加专题图(系列之三)关键字MapXDelphi专题图作者:杨雨田blue_bat@126.com
本文描述了在MapX中添加专题图的方法,其中MapX中关于添加专题图的过程语法描述如下(介于英语水平太高,能认识的英文字母大概还有二十多个,实在不愿意打开金山词霸给大家进行高质量的翻译,哈哈):
OBJECT.Add([Type],[Field],[Name],[ComputeTheme])
OBJECTRepresentsaThemesobject.
TypeSpecifiesthetypeofthematicmaptocreate.ThistakesaThemeTypeConstantsvalue.Thisisanoptionalparameter,andifnotspecified(orspecifiedasmiThemeAuto),MapXwillattempttochooseagooddefaultbasedonthenumberoffieldspassedinaswellaswhatotherthemetypesarealreadybeingdisplayed.IfMapXcannotchooseadefaultthemetype,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.
杨雨田blue_bat@126.com二零零四年八月二日
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐