require(["esri/symbols/jsonUtils"], function(symbolJsonUtils) { /* code goes here */ });
Description
(Added at v3.9)
Utility methods for working with symbols.
When coding legacy (non-AMD) style, there is no need to require the module. All methods and properties are available in the namespace. For example,
esri.symbol.fromJson()
.
Samples
Search for
samples that use this class.
Methods
Method Details
Converts input json into a symbol, returns null if the input json represents an unknown or unsupported symbol type. The input json argument typically comes from one of the following:
- Calling the symbol.toJson() method
var duplicate = esri.symbol.fromJson(simpleMarkerSymbol.toJson());
- Symbol object returned from REST.
When you create a MarkerSymbol, SimpleMarkerSymbol or PictureMarkerSymbol from a JSON object, you may specify a property angle to rotate the symbol. Be aware that the angle in the JSON is different from MarkerSymbol.angle. The angle in the JSON follows the traditional ArcGIS specification and is rotated counter-clockwise, whereas the angle in the symbol is rotated clockwise.
For example, the following code with angle=-30 in the JSON will create a symbol rotated -30 degrees counter-clockwise; that is, 30 degrees clockwise, which symbol.angle=30 would also produce.
var symbol = jsonUtils.fromJson({
"angle": -30,
"xoffset": 0,
"yoffset": 0,
"type": "esriPMS",
"url": "http://www.esri.com/careers/profiles/~/media/Images/Content/graphics/icons/socialmedia/pinterest1.png",
"width": 18,
"height": 18
});
Parameters:
<Object > json |
Required |
The input JSON. |
Returns the shape description properties for the given symbol as defined by the
Dojo GFX API. Using this method, you can apply ArcGIS symbology to shapes or graphics not created within a
GraphicsLayer.
Properties of the returned object include:
<Object> fill |
Defines how to fill a shape. The properties of this object are described in the dojo documentation. |
<Object> stroke |
An object that defines how to draw the outline of a shape. The properties of this object are described in the dojo documentation. |
<Object> defaultShape |
An object that defines a default geometry for the given symbol. It will always have a property named "type" that uniquely identifies the shape. The type property can have one of the following values based on the symbol: circle , path , or image . It is important to note that the geometry defined by this object will always be centered at the top-left corner (x = 0, y = 0) of the surface it is attached to. |
You can quickly create a GFX shape with ArcGIS symbology with the help of these descriptors using the
createShape method of the surface. Alternatively, you can choose to change the shape description before creating the shape.
Parameters:
<Symbol > symbol |
Required |
The input symbol. |
Sample: [JavaScript]
require([
"dojox/gfx", "dojo/dom", "esri/symbols/jsonUtils", ...
], function(gfx, dom, jsonUtils, ... ) {
var mySurface = gfx.createSurface(dom.byId("surface"), 50, 50);
var descriptors = jsonUtils.getShapeDescriptors(symbol);
var shape = mySurface.createShape(descriptors.defaultShape)
.setFill(descriptors.fill)
.setStroke(descriptors.stroke);
shape.applyTransform({ dx: 25, dy: 25 }); // center the shape at coordinates (25, 25)
...
});
[HTML]
<div id="surface"></div>