mapx標註之詳解

2021-08-24 22:55:33 字數 2875 閱讀 9403

以前做gis的時候,沒怎麼用到標記,今天終於接觸到標記這方面的東西,做了個demo測試了一下:

首先寫了個操作mapx的單元,其中有個函式:

function tmapmodule.createtempanimationlayer(var currentmap: tmap;

layername: string): cmapxlayer;

var layerinfo:cmapxlayerinfo;

flds : cmapxfields;

anewlayer : cmapxlayer;

begin

tryflds := cofields.create;

flds.addintegerfield('id',emptyparam);

flds.addstringfield('captiontoshow',254,emptyparam);

flds.addstringfield('name',254,emptyparam);

layerinfo := colayerinfo.create;

layerinfo.type_ := milayerinfotypetemp;

layerinfo.addparameter('filespec',layername);

layerinfo.addparameter('name',layername);

layerinfo.addparameter('fields',flds);

anewlayer := currentmap.layers.add(layerinfo,1);

currentmap.datasets.add( midatasetlayer , anewlayer , 'ds_'+layername , emptyparam,emptyparam,emptyparam,emptyparam,emptyparam);

currentmap.layers.animationlayer := anewlayer;

result := anewlayer;

except

result := nil;

end;

end;

2.新窗體中拖乙個tmapx控制項,設定了載入的geoset,

窗體建立的時候,建立乙個臨時圖層:

procedure tform1.formcreate(sender: tobject);

var amapmodule:tmapmodule;

alayer:cmapxlayer;

begin

amapmodule := tmapmodule.create;

alayer := amapmodule.createtempanimationlayer(mainmap,'temp_layer');

alayer.autolabel := true;

end;

3.窗體上拖乙個按鈕,onclick事件如下:

procedure tform1.button1click(sender: tobject);

var apoint:cmapxpoint;

acreatepoint,anewpoint:cmapxfeature;

alayer:cmapxlayer;

amapxdateset:cmapxdataset;

arowvalue:cmapxrowvalues;

begin

apoint := copoint.create;

apoint.set_(114.337552895699,30.5367033707355);

alayer := mainmap.layers['temp_layer'];

acreatepoint := mainmap.featurefactory.createsymbol(apoint,emptyparam);

anewpoint := alayer.addfeature(acreatepoint,emptyparam);

alayer.keyfield := 'captiontoshow';

anewpoint.keyvalue := 'this is caption' + #13#10 + 'hello! i am peirenlei';

anewpoint.update(emptyparam,emptyparam);

alayer.keyfield := 'name';

anewpoint.keyvalue := 'this is name';

anewpoint.update(emptyparam,emptyparam);

alayer.keyfield := 'id';

anewpoint.keyvalue := inttostr(1);

anewpoint.update(emptyparam,emptyparam);

alayer.keyfield := 'name';

showmessage(anewpoint.keyvalue);

anewpoint.update(emptyparam,emptyparam);

amapxdateset := mainmap.datasets.item['ds_temp_layer'] ;

arowvalue := amapxdateset.rowvalues[anewpoint];

showmessage(arowvalue.item['id'].value);

end;

經過上面的**,得出乙個結論,mapx的lable只能顯示建立的字段中的第乙個字元型的字段的值,而且必須手工指定,如:  alayer.keyfield := 'captiontoshow'; 如果指定為id,或者name,label 是不會顯示的,這一點要切記。

MapX程式設計詳解 C MapX發布技術

mapx 程式設計詳解 c mapx 發布基於mapx的軟體 開發好後,安裝在客戶機上,需要 mapx 的支援,如果把所需的 mapx 的相關檔案發布的客戶機上,最簡單的方法當然是在客戶機上安裝一套 mapx 的軟體,可是 mapx 容量大,安裝麻煩,而且要獨立安裝,不適合軟體的發布。如何解決這個問...

資料標註軟體labelme詳解

labelme 版本 3.11.2 例項分割樣例 voc 其它樣例 場景分割,目標檢測,分類 各形狀標註樣例 多邊形,矩形,圓形,多段線,線段,點 通用安裝方法 各平台都適用 anaconda,docker。各平台上的安裝方法 ubuntu,macos,windows。4.1 anaconda 首先...

詞法分析與詞性標註學習之筆記(二) 詞性標註

詞性是詞彙的基本語法屬性,通常稱為詞類。詞性標註 part of speech tagging,pos tagging 也被稱為語法標註 grammatical tagging 或詞類消疑 word category disambiguation 是語料庫語言學 corpus linguistics...