圖層動(dòng)態(tài)標(biāo)注JSON定義
1.環(huán)境說明
ArcGIS 10.4.1
JS API 3.15
2.圖層動(dòng)態(tài)標(biāo)注介紹
JS API中提供了動(dòng)態(tài)標(biāo)注的功能,該功能與ArcMap中開啟圖層的標(biāo)注功能類似÷扔兀可用于動(dòng)態(tài)的開啟地圖服務(wù)中某個(gè)圖層的標(biāo)注,并且自帶標(biāo)注避讓功能。
3.以JSON參數(shù)開啟圖層動(dòng)態(tài)標(biāo)注
使用JSON的好處,在前一篇中已經(jīng)說明渊跋。動(dòng)態(tài)標(biāo)注需要結(jié)合文字符號(hào)一起使用,JSON定義格式如下:
{
"labelExpressionInfo":{"value": "州名:{STATE_NAME},人口:{POP2000}"},
"labelPlacement":"above-right",
"symbol":{
"type": "esriTS",
"color": [255,0,255],
"font": {
"family":"Arial",
"size":10
}
}
}
4.圖層動(dòng)態(tài)標(biāo)注測試
以下示例已開啟FeatureLayer中的標(biāo)注為例:
第一步:開啟map標(biāo)注功能
map=new?Map("map", {
showLabels:true
});
注意:必須在構(gòu)造函數(shù)中設(shè)置。
第二步:設(shè)置FeatureLayer的返回字段拾酝,必須包含標(biāo)注的字段
var?citiesUrl="https://sampleserver6.arcgisonline.com/arcgis/rest/services/USA/MapServer/0";
var?citiesLayer=new?FeatureLayer(citiesUrl,{
outFields: ["*"]
});
第三步:設(shè)置文字標(biāo)注信息
//"above-center", "above-left", "above-right", "below-center", "below-left", "below-right", "center-center", "center-left", "center-right"
var?citiesLabelJson1= {
"labelExpressionInfo": {"value":"名稱:{areaname},人口:{pop2000}"},
"labelPlacement":"above-right",
"symbol":{
"type":"esriTS",
"color": [218,165,32],
"font": {
"family":"Microsoft YaHei",
"size":8
}
}
};
var?citiesLabelJson2= {
"labelExpressionInfo": {"value":"人口:{pop2000}"},
"labelPlacement":"below-right",
"symbol":{
"type":"esriTS",
"color": [128,128,128],
"font": {
"family":"Microsoft YaHei",
"size":12
}
}
}
var?citiesLabel1=new?LabelClass(citiesLabelJson1);
var?citiesLabel2=new?LabelClass(citiesLabelJson2);
citiesLayer.setLabelingInfo([citiesLabel1,citiesLabel2]);
citiesLayer.setShowLabels(true);
效果:
5.圖層動(dòng)態(tài)標(biāo)注小結(jié)
(1)點(diǎn)和線類型可以通過labelPlacement屬性設(shè)置標(biāo)注的位置燕少。
(2)在一個(gè)LabelClass中,可以組合多個(gè)字段構(gòu)成一個(gè)標(biāo)注內(nèi)容微宝,如示例中的citiesLabelJson1棺亭,標(biāo)注的內(nèi)容包含了areaname和pop2000兩個(gè)字段虎眨。
(3)一個(gè)FeatureLayer可以設(shè)置多個(gè)標(biāo)注蟋软,但由于注記避讓功能,個(gè)人覺得無意義嗽桩。