首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi MapX 從資料庫繪製地圖標記點

     編輯:Delphi

需求場景

將資料庫中的座標資料(經度/緯度或平面座標)以點狀圖層顯示於 MapX 地圖控件上,並附帶名稱標籤。

資料庫表結構

Table: XUnit
- ID: Integer (主鍵)
- Name: String (標籤名稱)
- X: Float (地圖 X 座標)
- Y: Float (地圖 Y 座標)

地圖圖層準備

  1. 編輯 MapX 地圖,新增一個圖層命名為「企事業單位」。
  2. 設定該圖層顯示樣式(圖示、標籤字型等)。
  3. 將圖層設為不可見、不可編輯,作為樣式範本。

Delphi 實作步驟

  1. 放置 MapX 控件 (Map1)。
  2. 連接資料庫 (AdoConnection1, ADOTable1 指向 XUnit 表)。
  3. 按鈕點擊事件撰寫繪製邏輯。

關鍵程式碼

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 可避免影響原始地圖圖層。
  • 樣式直接引用範本圖層,確保外觀一致。
  • 此範例僅示範點狀要素,面狀、線狀要素需依 MapX 文件擴充。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved