將資料庫中的座標資料(經度/緯度或平面座標)以點狀圖層顯示於 MapX 地圖控件上,並附帶名稱標籤。
Table: XUnit
- ID: Integer (主鍵)
- Name: String (標籤名稱)
- X: Float (地圖 X 座標)
- Y: Float (地圖 Y 座標)
MapX 控件 (Map1)。AdoConnection1, ADOTable1 指向 XUnit 表)。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.Layers.AnimationLayer := Lyr;
Lyr.Editable := True;
Pt := CoPoint.Create;
MStyle := CoStyle.Create;
// 取得範本圖層樣式
MStyle := Map1.Layers.Item('企事業單位').AllFeatures.Item(1).Style;
Lyr.Style := Map1.Layers.Item('企事業單位').Style;
Lyr.LabelProperties.Style := Map1.Layers.Item('企事業單位').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);
Fts.KeyValue := Str; // 設定標籤
Lyr.AddFeature(Fts, EmptyParam);
ADOTable1.Next;
end;
Lyr.AutoLabel := True;
Lyr.Visible := True;
Lyr.ZoomMin := 0;
Lyr.ZoomMax := 77;
end;
AnimationLayer 可避免影響原始地圖圖層。