使用ArcGIS Javascript SimpleMarkerSymbol JSON构造函数进行大小不一致

时间:2016-01-06 14:57:39

标签: javascript json arcgis-js-api

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

1 个答案:

答案 0 :(得分:1)

这可能会派上用场

points to pixels chart

通过Reed Design

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

  

表示SimpleMarkerSymbol的JSON对象。有关创建JSON符号的详细信息,请查看符号对象的REST API参考。请注意,使用JSON指定符号宽度和高度时,应以点为单位输入值,然后JavaScript API将点值转换为像素。

您会注意到您的值与上图完全匹配。即15个点约为20个像素,8个点约为11个像素等。

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