使用Arcgis Javascript API,我使用JSON构造函数创建SimpleMarkerSymbol。
文档:https://developers.arcgis.com/javascript/jsapi/simplemarkersymbol.html#simplemarkersymbol3
符号的大小和颜色来自GUI元素(调色板中的颜色,输入文本框中的大小)。
我的代码非常简单:
var pointColor = ... //no point in writing this part of the code
var pointSize = symbologyTable.getElementsByClassName("inputSize")[0].value;
console.log("pointSize = ", pointSize);
var pointSymbol = new esri.symbol.SimpleMarkerSymbol(
{
"color" : pointColor,
"size" : pointSize,
"style" : "esriSMSCircle"
}
);
console.log("pointSymbol = ", pointSymbol);
问题:第二个console.log显示的符号大小永远不会与从输入文本框中获取的符号大小一致。例如,如果我创建三个点,更改输入文本框中的值,console.log看起来像这样:
pointSize = 15
pointSymbol = Object{ color=..., size=20, ...}
pointSize = 8
pointSymbol = Object{ color=..., size=10.66666666, ...}
pointSize = 4
pointSymbol = Object{ color=..., size=5.333333333, ...}
出于调试目的,我尝试在创建pointSymbol变量时尝试直接在JSON中编写大小值(尝试"size" : 15
或"size" : "15"
),但是大小总是在console.log中修改。
setSize(size)
函数的作用是什么:如果我使用pointSymbol.setSize("15")
然后打印pointSymbol,则其大小为15.
任何线索为什么JSON大小定义可能不起作用?
非常感谢你的帮助!
编辑(1):2016-01-06: SimpleLineSymbol也会出现同样的问题 https://developers.arcgis.com/javascript/jsapi/simplelinesymbol.html
编辑(2):2016-01-06: Font和TextSymbol https://developers.arcgis.com/javascript/jsapi/font.html出现同样的问题 https://developers.arcgis.com/javascript/jsapi/textsymbol.html
答案 0 :(得分:1)
这可能会派上用场
由于Arcgis JSAPI文档中这个隐藏得很好的片段。
表示SimpleMarkerSymbol的JSON对象。有关创建JSON符号的详细信息,请查看符号对象的REST API参考。请注意,使用JSON指定符号宽度和高度时,应以点为单位输入值,然后JavaScript API将点值转换为像素。
您会注意到您的值与上图完全匹配。即15个点约为20个像素,8个点约为11个像素等。
如果您想以像素为单位指定,请使用this constructor for SimpleMarkerSymbol