從數據庫繪制MapX地圖(二)
主題:MapX Delphi數據庫 地圖 Layer Style Font
我在二〇〇四年四月十五日發表文章《從數據庫繪制MapX地圖》之後,我收到大量讀者的來信,由於繁忙,不能一一回復,在這裡對此表示真誠的歉意!僅以此文感謝對我表示支持的眾位兄弟姐妹,謝謝你們。
這裡提供的是一種更為高效的從數據庫繪制MapX地圖的方法,我在數據庫中建立了如下的數據表:
表名稱:Xunit
ID :字符串 //用於唯一標識各個圖元,也可以是數字類型的
NAME :字符串 //圖元的名稱
X :浮點數 //圖元橫坐標
Y :浮點數 //圖元縱坐標
代碼清單:
//aqXUnit是一個TADOQuery,其中SQL語句為“SELECT * FROM XUNIT”。
procedure TfrmMain.DrawLayerFromDB;
var
oBLayer : BindLayer;
SearchLayer : Layer;
ds : Dataset;
begin
//使用這個過程必須保證aqXUnit表已經打開!
if not aqXUnit.Active
then
begin
GiveMsg('系統基礎表沒有打開!');//調用自定義提示方法
exit;
end;
//創建BindLayer,非常討厭半英半漢,沒辦法,不會翻譯^_^
oBLayer := coBindLayer.Create;
oBLayer.LayerName := 'ARTEMIS';
oBLayer.LayerType := miBindLayerTypeXY;//必須使用這個參數才能綁定XY坐標
oBLayer.RefColumn1 := 'X';//第一個參數必須指定為橫坐標
oBLayer.RefColumn2 := 'Y';//縱坐標
//添加數據集
ds := mapMain.Datasets.Add(12,//數據集類型,這是miDataSetADO,即ADO專用的
aqXUnit.Recordset,//使用這個方法獲得ADO中的_Recordset類型
'DS_SK',//數據集名稱
'ID',//傳入的是Xunit表中的字段ID的名稱
EmptyParam,
oBLayer,//BindLayer
EmptyParam,
EmptyParam);
//下邊將設置新圖層的各項屬性
searchLayer := mapMain.Layers.Item('ARTEMIS');
//字體顏色
searchLayer.LabelProperties.Style.TextFontColor := miColorPurple;
searchLayer.LabelProperties.Style.TextFontHalo := true;
searchLayer.LabelProperties.Style.TextFontBackColor := miColorWhite;
//設置圖元顯示的標簽
searchLayer.LabelProperties.Dataset := ds;
searchLayer.LabelProperties.DataField := ds.Fields.Item('NAME');
searchLayer.LabelProperties.LabelZoom := true;
//設置圖層縮放比例范圍
searchLayer.ZoomMin := 0;
searchLayer.ZoomMax := 200;
searchLayer.ZoomLayer := true;
//設置標簽縮放比例范圍
searchLayer.LabelProperties.LabelZoomMin := 0;
searchLayer.LabelProperties.LabelZoomMax := 200;
searchLayer.LabelProperties.LabelZoom := true;
//自動標記圖元
searchLayer.AutoLabel := true;
end;
這個方法比上文提到的方法應該快了很多很多,哈哈~~
楊雨田 [email protected]
二〇〇四年七月十三日