var myGraphimyGraphic.geometry = new MapPoint(70000,71000); myGraphic.symbol = new SimpleMarkerSymbol("cross"); var jsonStr = JSON.encode(myGraphic); trace(jsonStr);
private function jsonEncodeGraphic(graphic:Graphic):String { var graObj:Object = new Object(); graObj.geometry = graphic.geometry; graObj.symbol = encodeSymbol(graphic.symbol); return JSON.encode(graObj); } private function encodeColor(color:uint, alpha:Number = 1):Array { var colorArray:Array = new Array(); var alphaRestValue:uint = alpha * 255; var hexRep:String = color.toString(16); if (hexRep.length == 6) { colorArray.push(new uint("0x" + hexRep.substring(0, 2))); colorArray.push(new uint("0x" + hexRep.substring(2, 4))); colorArray.push(new uint("0x" + hexRep.substring(4, 6))); } else if (hexRep.length == 4) { colorArray.push(new uint(0)); colorArray.push(new uint("0x" + hexRep.substring(0, 2))); colorArray.push(new uint("0x" + hexRep.substring(2, 4))); } else if (hexRep.length == 2) { colorArray.push(new uint(0)); colorArray.push(new uint(0)); colorArray.push(new uint("0x" + hexRep.substring(0, 2))); } else { colorArray.push(new uint(0)); colorArray.push(new uint(0)); colorArray.push(new uint(0)); } colorArray.push(alphaRestValue); return colorArray; } private function encodeSymbol(symbol:Symbol):Object { var symbolObj:Object = new Object(); if (symbol is TextSymbol) { var textSym:TextSymbol = symbol as TextSymbol; //not yet finished symbolObj.type = "esriTS"; symbolObj.angle = textSym.angle; symbolObj.color = encodeColor(textSym.color, textSym.alpha); if (textSym.background) symbolObj.backgroundColor = encodeColor(textSym.backgroundColor); if (textSym.border) symbolObj.borderLineColor = encodeColor(textSym.borderColor); symbolObj.xoffset = textSym.xoffset; symbolObj.yoffset = textSym.yoffset; symbolObj.text = textSym.text; return symbolObj; } else if (symbol is SimpleMarkerSymbol) { var markerSym:SimpleMarkerSymbol = symbol as SimpleMarkerSymbol; symbolObj.type = "esriSMS"; symbolObj.style = symbolObj.type + markerSym.style.substring(0, 1).toUpperCase() + markerSym.style.substring(1); symbolObj.color = encodeColor(markerSym.color, markerSym.alpha); symbolObj.size = markerSym.size; symbolObj.angle = markerSym.angle; symbolObj.xOffset = markerSym.xoffset; symbolObj.yOffset = markerSym.yoffset; if (markerSym.outline) { var outlineObj:Object = new Object(); outlineObj.color = encodeColor(markerSym.outline.color, markerSym.outline.alpha); outlineObj.width = markerSym.outline.width; outlineObj.style = markerSym.outline.style; symbolObj.outline = outlineObj; } return symbolObj; } else if (symbol is SimpleLineSymbol) { var lineSym:SimpleLineSymbol = symbol as SimpleLineSymbol; symbolObj.type = "esriSLS"; symbolObj.style = symbolObj.type + lineSym.style.substring(0, 1).toUpperCase() + lineSym.style.substring(1); symbolObj.color = encodeColor(lineSym.color, lineSym.alpha); symbolObj.width = lineSym.width; return symbolObj; } else if (symbol is SimpleFillSymbol) { var fillSym:SimpleFillSymbol = symbol as SimpleFillSymbol; symbolObj.type = "esriSFS"; symbolObj.style = symbolObj.type + fillSym.style.substring(0, 1).toUpperCase() + fillSym.style.substring(1); symbolObj.color = encodeColor(fillSym.color, fillSym.alpha); if (fillSym.outline) symbolObj.outline = encodeSymbol(fillSym.outline); return symbolObj; } Alert.show("Unknown SYMBOL type to convert to json: " + symbol); return null; }
private function addGras():void { drawAC = new ArrayCollection(); var i:Number; var symTypeName:String = ""; var symType:String = ""; var symLType:String = ""; var symFontE:String = ""; var symSize:Number = 1; var symColor:Number = 0x000000; var symColor2:Number = 0x000000; var symWidth:Number = 1; var symText:String = ""; var symAlpha1:Number = 1; var symAlpha2:Number = 1; var geomType:String = ""; var geomSR:Number; var gname:String = ""; for (i = 0; i < graphicsLayer.numGraphics; i++) { var geomArray:Array = []; symText = ""; var gra:Graphic = graphicsLayer.getChildAt(i) as Graphic; switch(gra.geometry.type) { case Geometry.MAPPOINT: { if (gra.symbol is TextSymbol) { var txtSym:TextSymbol = gra.symbol as TextSymbol; symTypeName = "TextSymbol"; var txtFormat:TextFormat = txtSym.textFormat; if(useDefaultFont){ symType = "Arial" }else{ symType = txtFormat.font } symText = txtSym.text; if (txtFormat.bold) symFontE += "B" if (txtFormat.italic) symFontE += "I" if (txtFormat.underline) symFontE += "U" symSize = Number(txtFormat.size); symColor = Number(txtFormat.color); } else { var ptSym:SimpleMarkerSymbol = gra.symbol as SimpleMarkerSymbol; symTypeName = "SimpleMarkerSymbol"; symType = ptSym.style; symColor = ptSym.color; symSize = ptSym.size; symAlpha1 = ptSym.alpha; symColor2 = ptSym.outline.color; symAlpha2 = ptSym.outline.alpha; symWidth = ptSym.outline.width; symLType = ptSym.outline.style; } geomType = "MAPPOINT"; var pnt:MapPoint = gra.geometry as MapPoint; geomSR = gra.geometry.spatialReference.wkid geomArray.push(pnt); break; } case Geometry.POLYLINE: { var lineSym:SimpleLineSymbol = gra.symbol as SimpleLineSymbol; symTypeName = "SimpleLineSymbol"; symType = lineSym.style; symWidth = lineSym.width; symAlpha1 = lineSym.alpha; symColor = lineSym.color; geomType = "POLYLINE"; var polyline:Polyline = gra.geometry as Polyline; for (var i1:int = 0; i1 < polyline.paths.length; i1++) { for (var j:int = 0; j < polyline.paths[i1].length; j++) { var mp:MapPoint = polyline.getPoint(i1,j) as MapPoint; geomArray.push(mp); } } geomSR = gra.geometry.spatialReference.wkid break; } case Geometry.POLYGON: { var polySym:SimpleFillSymbol = gra.symbol as SimpleFillSymbol; symTypeName = "SimpleFillSymbol"; symType = polySym.style; symWidth = polySym.outline.width; symLType = polySym.outline.style; symAlpha1 = polySym.alpha; symAlpha2 = polySym.outline.alpha symColor = polySym.color; symColor2 = polySym.outline.color; geomType = "POLYGON"; var poly:Polygon= gra.geometry as Polygon; for (var i2:int = 0; i2 < poly.rings.length; i2++) { for (var j1:int = 0; j1 < poly.rings[i2].length; j1++) { var mp2:MapPoint = poly.getPoint(i2,j1) as MapPoint; geomArray.push(mp2); } } geomSR = gra.geometry.spatialReference.wkid break; } case Geometry.EXTENT: { var rectSym:SimpleFillSymbol = gra.symbol as SimpleFillSymbol; symTypeName = "SimpleFillSymbol"; symType = rectSym.style; symWidth = rectSym.outline.width; symLType = rectSym.outline.style; symAlpha1 = rectSym.alpha; symAlpha2 = rectSym.outline.alpha symColor = rectSym.color; symColor2 = rectSym.outline.color; geomType = "EXTENT"; var rect:Extent= gra.geometry as Extent; var mp3:MapPoint; mp3 = new MapPoint(rect.xmin, rect.ymin, gra.geometry.spatialReference); geomArray.push(mp3); mp3 = new MapPoint(rect.xmax, rect.ymax, gra.geometry.spatialReference); geomArray.push(mp3); geomSR = gra.geometry.spatialReference.wkid break; } } var gObj:Object = { geomtype: geomType, geomarray: geomArray, geomsr: geomSR, symtypename: symTypeName, symtype: symType, symsize: symSize, symcolor: symColor, symcolor2: symColor2, symwidth: symWidth, symtext: symText, symalpha1: symAlpha1, symalpha2: symAlpha2, cmenu: gra.contextMenu, symfonte: symFontE, symltype: symLType, gname: gra.name } drawAC.addItem(gObj); } if(!fr) fr = new FileReference(); fr.save(JSON.encode(drawAC.source),"SavedGraphics.txt") graphicsLayer.clear(); }
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.