//>>built define("dojox/geo/openlayers/GeometryFeature",["dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojox/gfx/matrix","./Point","./LineString","./Collection","./Feature"],function(_1,_2,_3,_4,_5,_6,_7,_8){ return _1("dojox.geo.openlayers.GeometryFeature",_8,{constructor:function(_9){ this._geometry=_9; this._shapeProperties={}; this._fill=null; this._stroke=null; },_createCollection:function(g){ var _a=this.getLayer(); var s=_a.getSurface(); var c=this.createShape(s,g); var vp=_a.getViewport(); vp.add(c); return c; },_getCollectionShape:function(g){ var s=g.shape; if(s==null){ s=this._createCollection(g); g.shape=s; } return s; },renderCollection:function(g){ if(g==undefined){ g=this._geometry; } s=this._getCollectionShape(g); var _b=this.getShapeProperties(); s.setShape(_b); _2.forEach(g.coordinates,function(_c){ if(_c instanceof _5){ this.renderPoint(_c); }else{ if(_c instanceof _6){ this.renderLineString(_c); }else{ if(_c instanceof _7){ this.renderCollection(_c); }else{ throw new Error(); } } } },this); this._applyStyle(g); },render:function(g){ if(g==undefined){ g=this._geometry; } if(g instanceof _5){ this.renderPoint(g); }else{ if(g instanceof _6){ this.renderLineString(g); }else{ if(g instanceof _7){ this.renderCollection(g); }else{ throw new Error(); } } } },getShapeProperties:function(){ return this._shapeProperties; },setShapeProperties:function(s){ this._shapeProperties=s; return this; },createShape:function(s,g){ if(!g){ g=this._geometry; } var _d=null; if(g instanceof _5){ _d=s.createCircle(); }else{ if(g instanceof _6){ _d=s.createPolyline(); }else{ if(g instanceof _7){ var _e=s.createGroup(); _2.forEach(g.coordinates,function(_f){ var shp=this.createShape(s,_f); _e.add(shp); },this); _d=_e; }else{ throw new Error(); } } } return _d; },getShape:function(){ var g=this._geometry; if(!g){ return null; } if(g.shape){ return g.shape; } this.render(); return g.shape; },_createPoint:function(g){ var _10=this.getLayer(); var s=_10.getSurface(); var c=this.createShape(s,g); var vp=_10.getViewport(); vp.add(c); return c; },_getPointShape:function(g){ var s=g.shape; if(s==null){ s=this._createPoint(g); g.shape=s; } return s; },renderPoint:function(g){ if(g==undefined){ g=this._geometry; } var _11=this.getLayer(); var map=_11.getDojoMap(); s=this._getPointShape(g); var _12=_3.mixin({},this._defaults.pointShape); _12=_3.mixin(_12,this.getShapeProperties()); s.setShape(_12); var _13=this.getCoordinateSystem(); var p=map.transform(g.coordinates,_13); var a=this._getLocalXY(p); var cx=a[0]; var cy=a[1]; var tr=_11.getViewport().getTransform(); if(tr){ s.setTransform(_4.translate(cx-tr.dx,cy-tr.dy)); } this._applyStyle(g); },_createLineString:function(g){ var _14=this.getLayer(); var s=_14._surface; var _15=this.createShape(s,g); var vp=_14.getViewport(); vp.add(_15); g.shape=_15; return _15; },_getLineStringShape:function(g){ var s=g.shape; if(s==null){ s=this._createLineString(g); g.shape=s; } return s; },renderLineString:function(g){ if(g==undefined){ g=this._geometry; } var _16=this.getLayer(); var map=_16.getDojoMap(); var lss=this._getLineStringShape(g); var _17=this.getCoordinateSystem(); var _18=new Array(g.coordinates.length); var tr=_16.getViewport().getTransform(); _2.forEach(g.coordinates,function(c,i,_19){ var p=map.transform(c,_17); var a=this._getLocalXY(p); if(tr){ a[0]-=tr.dx; a[1]-=tr.dy; } _18[i]={x:a[0],y:a[1]}; },this); var _1a=_3.mixin({},this._defaults.lineStringShape); _1a=_3.mixin(_1a,this.getShapeProperties()); _1a=_3.mixin(_1a,{points:_18}); lss.setShape(_1a); this._applyStyle(g); },_applyStyle:function(g){ if(!g||!g.shape){ return; } var f=this.getFill(); var _1b; if(!f||_3.isString(f)||_3.isArray(f)){ _1b=f; }else{ _1b=_3.mixin({},this._defaults.fill); _1b=_3.mixin(_1b,f); } var s=this.getStroke(); var _1c; if(!s||_3.isString(s)||_3.isArray(s)){ _1c=s; }else{ _1c=_3.mixin({},this._defaults.stroke); _1c=_3.mixin(_1c,s); } this._applyRecusiveStyle(g,_1c,_1b); },_applyRecusiveStyle:function(g,_1d,_1e){ var shp=g.shape; if(shp.setFill){ shp.setFill(_1e); } if(shp.setStroke){ shp.setStroke(_1d); } if(g instanceof _7){ _2.forEach(g.coordinates,function(i){ this._applyRecusiveStyle(i,_1d,_1e); },this); } },setStroke:function(s){ this._stroke=s; return this; },getStroke:function(){ return this._stroke; },setFill:function(f){ this._fill=f; return this; },getFill:function(){ return this._fill; },remove:function(){ var g=this._geometry; var shp=g.shape; g.shape=null; if(shp){ shp.removeShape(); } if(g instanceof _7){ _2.forEach(g.coordinates,function(i){ this.remove(i); },this); } },_defaults:{fill:null,stroke:null,pointShape:{r:30},lineStringShape:null}}); });