This is documentation of an archived release.
For documentation on the current version, please check Knowledge Base.

Example using MapObjects in Esri/JS

Rendering lines

Below is an example of creating an esri/js Polyline geometry.

/**
 * Create an esri/js geometry for a mapObject line.
 */
getGeometryForLine: function(mapObject) {
    // Create path coordinates
    var parts = []
    for (var i=0; i<mapObject.spatialLine.parts.size(); i++) {
        var coordinates = [];
        var part = mapObject.spatialLine.parts.get(i);
        for (var j=0; j<part.points.size(); j++) {
            var point = part.points.get(j);
            coordinates.push([point.x,point.y,point.z]);
        }
        parts.push(coordinates);
    }
    // Create polygon
    return new Polyline(parts.length==1 ? parts[0] : parts);
};

Below is an example of creating an esri/js Symbol.

/**
 * Create an esri/js symbol for rendering a mapobject line.
 */
getSymbolForLine: function(mapObject) {
    var color = this.defaultColor;
    var lineWidth = mapObject.lineWidth || this.defaultLineWidth;
    if (mapObject.color) {
        var a = mapObject.color.alpha/255;
        var r = mapObject.color.red;
        var g = mapObject.color.green;
        var b = mapObject.color.blue;
        color = new Color([r,g,b,a]);
    }
    return new SimpleLineSymbol(
        SimpleLineSymbol.STYLE_SOLID,
        color,
        lineWidth
    );
},

Rendering Areas

Below is an example of creating an esri/js Polygon geometry.

/**
 * Create an esri/js geometry for a mapObject area.
 */
getGeometryForArea: function(mapObject) {
    // Create parts of lists of coordinates.
    var parts = [];
    for (var i=0; i<mapObject.spatialArea.parts.size(); i++) {
        var coordinates = [];
        var part = mapObject.spatialArea.parts.get(i);
        for (var j=0; j<part.points.size(); j++) {
            var point = part.points.get(j);
            coordinates.push([point.x,point.y,point.z]);
        }
        parts.push(coordinates);
    }
    // Create polygon
    return new Polygon(parts.length==1 ? parts[0] : parts);
};

Below is an example of creating an esri/js filling Symbol.

/**
 * Create an esri/js symbol for rendering a mapobject area.
 */
getSymbolForArea: function(mapObject) {
    var fillColor = this.defaultFillColor;
 
    if (mapObject.fillColor) {
        var a = mapObject.fillColor.alpha/255;
        var r = mapObject.fillColor.red;
        var g = mapObject.fillColor.green;
        var b = mapObject.fillColor.blue;
        fillColor = new Color([r,g,b,a]);
    }
 
    return new SimpleFillSymbol(
        SimpleFillSymbol.STYLE_SOLID,
        this.getSymbolForLine(mapObject),
        fillColor
    );
};

Rendering points

And here is an example of creating an esri/js symbol using this WKT path :

/**
 * Create an esri symbol for rendering a mapobject point.
 */
getSymbolForPoint: function(mapObject) {
 
    var color = this.defaultColor;
    var fillColor = this.defaultFillColor;
    var symbolSize = mapObject.symbolSize || this.defaultSymbolSize;
    var lineWidth = mapObject.lineWidth || this.defaultLineWidth;
 
    if (mapObject.color) {
        var a = mapObject.color.alpha/255;
        var r = mapObject.color.red;
        var g = mapObject.color.green;
        var b = mapObject.color.blue;
        color = new Color([r,g,b,a]);
    }
 
    if (mapObject.fillColor) {
        var a = mapObject.fillColor.alpha/255;
        var r = mapObject.fillColor.red;
        var g = mapObject.fillColor.green;
        var b = mapObject.fillColor.blue;
        fillColor = new Color([r,g,b,a]);
    }
 
    if (mapObject.symbolPath) {
 
        var parts = this.getSymbolPath(mapObject);
        var maxDistance = parts[0];
        var symbolPath = parts[1];
 
        var symbol = new SimpleMarkerSymbol();
        symbol.setSize(maxDistance*2);
        symbol.setPath(symbolPath);
        symbol.setColor(fillColor)
        symbol.setOutline(this.getSymbolForLine(mapObject));
        return symbol;
 
    } else {
 
        // Get symbol name, fall back on "circle".
        var predefinedNames = ["circle"];
        var symbolName = predefinedNames.indexOf(mapObject.symbolName)>=0 ? mapObject.symbolName : "circle";
 
        if (symbolName=="circle") {
            // The default symbol.
            var symbolName = SimpleMarkerSymbol.STYLE_CIRCLE;
            return new SimpleMarkerSymbol(symbolName,symbolSize,this.getSymbolForLine(mapObject),color,lineWidth),fillColor);
        }
    } 
};
 
Last modified:: 2019/04/10 11:22