使用 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
关于javascript - 大小与 ArcGIS Javascript SimpleMarkerSymbol JSON 构造函数不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34636157/