与 ArcGIS Javascript SimpleMarkerSymbol JSON 构造函数的大小不一致

Size Incoherence with the ArcGIS Javascript SimpleMarkerSymbol JSON Constructor

使用 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

这可能会派上用场

通过Reed Design

因为 Arcgis JSAPI 文档中这个隐藏得很好的片段。

JSON object representing the SimpleMarkerSymbol. View the REST API Reference for Symbol Objects for details on creating a JSON symbol. Note that when specifying symbol width and height using JSON the values should be entered in points, the JavaScript API then converts the point values to pixels.

您会发现您的值与上表非常吻合。即 15 个点大约是 20 个像素,8 个点大约是 11 个像素等等

如果要以像素为单位指定,请使用 this constructor for SimpleMarkerSymbol