主題:MapX Delphi數(shù)據(jù)庫 地圖 Layer Style Font
 
本文將帶你從數(shù)據(jù)庫中取數(shù)據(jù)在MapX上畫出來。
1、在數(shù)據(jù)庫中建立如下的表用于存儲坐標:
ID            integer     //唯一編號
Name      string      //名稱(標簽)
X             float //地圖坐標X
Y             float //地圖坐標Y
假設這個表命名為XUnit
2、編輯MapX地圖,添加一個新的Layer,定義好你希望將來添加圖層顯示樣式,然后設置這個圖層不可見、不可編輯,此圖層名稱假設為“企事業(yè)單位”。
3、在你的程序中添加MapX控件,命名為Map1
4、在窗口中添加BDE或者ADO
組件并連接到你的數(shù)據(jù)庫,假設你添加了AdoConnection1和ADOTable1并且把他們的相關屬性都設好了ADOTable1中應該是上述表中的全部內容。
5、添加按鈕,并在按鈕中添加Click時間代碼如下:
PRocedure TForm1.Button1Click(Sender: TObject);
 var
  lyr : layer;//層
  fts : feature;//特征
  pt : point;//點
  mstyle : style;//樣式
  str : string;//特征標注
  x,y : double;
begin
  lyr := Map1.Layers.CreateLayer('tempAnimate', EmptyParam,1,EmptyParam, EmptyParam);
       //在Map1中創(chuàng)建一個Layer
  Map1.Layers.AnimationLayer := lyr;//設為當前層
 
  lyr.Editable := true;//可編輯
  pt := copoint.Create;
  mstyle := costyle.Create;
  mstyle := map1.Layers.item('企事業(yè)單位').AllFeatures.Item(1).Style;//此處獲取在層“企事業(yè)單位”中存儲的特征樣式
  lyr.Style := map1.Layers.item('企事業(yè)單位').Style;//層的樣式
  lyr.LabelProperties.Style := map1.Layers.item('企事業(yè)單位').LabelProperties.Style;//標簽樣式
  adotable1.First;
  while not adotable1.Eof do
  begin
    X := adotable1.fieldbyname('X').AsFloat ;
    y := adotable1.fieldbyname('Y').AsFloat;
    str := adotable1.fieldbyname('Name').AsString;
    pt.Set_(x,y);
    fts := map1.FeatureFactory.CreateSymbol(pt,mstyle);//創(chuàng)建特征
    fts.KeyValue := str;//標注
    lyr.AddFeature(fts,emptyparam);//將特征添加到層
    adotable1.Next;
  end;
  lyr.AutoLabel := true;//自動標注
  lyr.Visible := true;//可見
  lyr.ZoomMin := 0;//縮放范圍
  lyr.ZoomMax := 77;
end;
6、按照以上步驟我們可以直接將數(shù)據(jù)庫中的數(shù)據(jù)在地圖上表現(xiàn)出來,當然我們只是表現(xiàn)了特征點,并沒有表現(xiàn)那些區(qū)域等其他東西,其他東西應該也可以,不過我用不到,哈哈。。
 
二○○四年四月十五日