ArcGIS API for JavaScript 3.24 文字标注的添加和带背景的文字添加
说明:本人是一个gis小白,由于网上的资料过于专业,当时学习的时候经常看不懂,于是写了一些简单的关于ArcGIS Api for javaScript分享,若该分享中出现错误,希望大家指出,若能帮助到各位,不胜荣幸。
之前分享过添加一个点标注的方法,由于之前的写的比较详细且方法类似,这里就不细说,若有看不懂的可以先看看之前的那个分享 ArcGIS API for JavaScript 3.24 标注的添加和点击标注的回调事件
//文字
var addTextSymbol = function(point,symbol,attributes,infoTemplate) {
point = new DCI.esri.Point(point.longitude,point.latitude);
symbol = new DCI.esri.TextSymbol({
'text': symbol.text || 'Missing text',
'color': symbol.color || {a:1,r:0,g:0,b:0}, //{a:1,r:255,g:255,b:255}
'angle': symbol.angle || 0,
'xoffset': symbol.xoffset || 0,
'yoffset': symbol.yoffset || 0,
'font': new DCI.esri.Font(
symbol.fontSize || "14pt",
DCI.esri.Font.STYLE_ITALIC,
DCI.esri.Font.VARIANT_NORMAL,
DCI.esri.Font.WEIGHT_BOLD,
symbol.fontFamily || "Courier"
)
});
infoTemplate = infoTemplate ? new DCI.esri.InfoTemplate(infoTemplate) : '';
var graphic = new DCI.esri.Graphic(point,symbol,attributes,infoTemplate);
DCI.map.graphics.add(graphic);
return [graphic]
};
这是添加文字的方法,基本和添加点标注的方法一样
接下来是添加带背景的文字,先来看一下效果
这样的标注在项目中经常会用到,所以我单独给写了一个方法,其实这个标注也就是将文字标注和点标注的一个结合
//有背景的文字
var addBackgroundTextSymbol = function(point,symbol,textSymbol,attributes,infoTemplate){
point = new DCI.esri.Point(point.longitude,point.latitude);
var _symbol = new DCI.esri.SimpleMarkerSymbol({
"color": symbol.color || {a:1,r:255,g:0,b:0} ,
"size": symbol.size || 'auto',
"angle": symbol.angle || 0,
"xoffset": symbol.xoffset || 0,
"yoffset": symbol.yoffset || 0,
"style": "esriSMSCircle",
"outline": {
"color": symbol.outlineColor || "",
"width": symbol.outlineWidth || 0,
"type": "esriSLS",
"style": "esriSLSSolid"
}
});
symbol.size ? _symbol.setSize(symbol.size) : '';
infoTemplate = infoTemplate ? new DCI.esri.InfoTemplate(infoTemplate) : '';
var graphic = new DCI.esri.Graphic(point,_symbol,attributes,infoTemplate);
DCI.map.graphics.add(graphic);
textSymbol = new DCI.esri.TextSymbol({
'text': textSymbol.text || 'Missing text',
'color': textSymbol.color || '', //{a:1,r:255,g:255,b:255}
'angle': textSymbol.angle || 0,
'xoffset': textSymbol.xoffset || 0,
'yoffset': textSymbol.yoffset || 0,
'font': new DCI.esri.Font(
textSymbol.fontSize || "12",
DCI.esri.Font.STYLE_ITALIC,
DCI.esri.Font.VARIANT_NORMAL,
DCI.esri.Font.WEIGHT_BOLD,
textSymbol.fontFamily || "Courier"
)
});
var textGraphic = new DCI.esri.Graphic(point,textSymbol,attributes,infoTemplate);
DCI.map.graphics.add(textGraphic);
return [graphic,textGraphic]
};
首先添加背景,然后在相同的位置添加文字,效果就能达到和上图一样的效果