import nl.idgis.giclient.modes.MapViewerSelectByGeometry; import nl.idgis.giclient.gui.mapviewer.MapViewer; import nl.idgis.giclient.geoma.Point; import nl.idgis.giclient.gis.SelectableLayer; import nl.idgis.giclient.gis.Feature; import nl.idgis.giclient.gui.mapviewer.MapFeature; import nl.idgis.giclient.util.SynchListener; import nl.idgis.giclient.gis.GIS; import nl.idgis.giclient.geoma.LinearRing; import nl.idgis.giclient.geoma.Circle; import nl.idgis.giclient.geoma.Geometry; import nl.idgis.giclient.gui.mapviewer.MapGeometry; import nl.idgis.giclient.config.Colors; /** * @author velsll */ class nl.idgis.giclient.modes.MapViewerSelectByFeature extends MapViewerSelectByGeometry implements SynchListener{ private var selectionFeature:Feature; function performPress(mapViewer:MapViewer, pressX:Number, pressY:Number, point:Point):Void { this.mapViewer = mapViewer; if(newGeometry){ selectionGeometry = null; GIS(mapViewer.ruler.getGIS()).clearSelectedFeatures(); if (selectionMapGeometry != null) { removeMapGeometry(mapViewer); } newGeometry = false; } var mapFeatures:Array = mapViewer.getMapFeaturesUnderMousePointer(MapViewer.FRONTMOST_LAYER, false, false); var layer:SelectableLayer = SelectableLayer(mapFeatures[0]._parent._parent.getLayer()); var featureID:String = mapViewer.getFeatureID(mapFeatures[0]._name); selectionFeature= layer.getFeature(featureID); selectionFeature.requestProperties(this); } function onSynch(target:Object, action:String):Void { if(selectionFeature.getGeometry()instanceof Point){ createGeometry(Point(selectionFeature.getGeometry())); } else { selectionGeometry = selectionFeature.getGeometry(); } selectionMapGeometry = MapGeometry(mapViewer.getGeometryLayer().addMapGeometry(selectionGeometry, MapGeometry.SELECTION, Colors.selectionGeometryColor, "")); selectionMapGeometry.onChangeGeometry(); setSelection(); newGeometry = true; showBufferFrame(mapViewer); } private function createGeometry(point:Point):Void { var pwidth:Number = mapViewer.pixel2Point(0,0).getX() - mapViewer.pixel2Point(1,1).getX();; var points:Array = new Array(point, point); var linearRing:LinearRing = new LinearRing(point.getSRS(), points); selectionGeometry = new Circle(point.getSRS(), linearRing); selectionGeometry.setPointXY(point.getX() + pwidth, point.getY()); } }