private function locateCoordinates():void { originatingLocateState = currentState; // refresh before each request hideInfoWindow(); graphicsLayer.clear(); if (locateResultAC) { locateResultAC.removeAll(); } try { var vals:Array; var long:String=txtLong.text; var lat:String= txtLat.text; vals=long.split(" "); long=(Number(vals[0]) + Number(vals[1]) / 60 + Number(vals[2]) / 3600).toString(); vals=lat.split(" "); lat=(Number(vals[0]) - Number(vals[1]) / 60 - Number(vals[2]) / 3600).toString(); if (long && lat) { showStateResults(); var locateResult:LocateResult = new LocateResult(); locateResult.symbol = resultSymbol; locateResult.title = coordinatesLabel; locateResult.content = long + " " + lat; locateResult.link = ""; locateResult.selected = true; locateResult.point = new MapPoint(Number(long), Number(lat),new SpatialReference(4326)); var gra:Graphic= new Graphic(locateResult.point); geometryService.project([gra],map.spatialReference); } } catch (error:Error) { showMessage(error.message, false); } }private function projectCompleteHandler(event:GeometryServiceEvent):void { hideInfoWindow(); graphicsLayer.clear(); //WidgetEffects.flipWidget(this, viewStack, "selectedIndex", 2, 400); try { var long:String = txtLong.text; var lat:String = txtLat.text; var point:MapPoint = (event.result as Array)[0] as MapPoint; var icon:String = widgetIcon; var title:String = coordinatesLabel; var content:String = long.toString() + ", " + lat.toString(); var link:String = ""; var infoData:Object = { icon: icon, title: title, content: content, link: link, point: point, geometry: point }; //showLocation(infoData); //showMessage(locationsLabel, false); locateResultAC = new ArrayCollection([ infoData ]); addSharedData(widgetTitle, locateResultAC); showLocation(infoData); showMessage(locationsLabel + " " + locateResultAC.length, false); } catch (error:Error) { showMessage(error.message, false); } } <esri:GeometryService id="geometryService" url="http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Geometry/GeometryServer" projectComplete="projectCompleteHandler(event)"/>
Solved! Go to Solution.
private function dms_to_deg ( dmsStr:String ):Number { var negNum:Boolean = false; if(dmsStr.toLowerCase().indexOf("w") > -1){ negNum = true; } if(dmsStr.toLowerCase().indexOf("s") > -1){ negNum = true; } var myPattern:RegExp = /[WwnN ]/g; dmsStr = dmsStr.replace(myPattern,""); var dmsArr:Array = dmsStr.split("-"); //Compute degrees, minutes and seconds: var sec:Number = Number(dmsArr[2]) / 60; var min:Number = sec + Number(dmsArr[1]); var dec:Number = min / 60; var fDeg:Number = dec + Number(dmsArr[0]); if(negNum){ fDeg = -Math.abs(fDeg); } return fDeg; } private function locateCoordinates():void { originatingLocateState = currentState; // refresh before each request hideInfoWindow(); graphicsLayer.clear(); if (locateResultAC) { locateResultAC.removeAll(); } try { var vals:Array; var long:String = txtLong.text; var lat:String = txtLat.text; if (long && lat) { showStateResults(); var nLat:Number = dms_to_deg(lat); var nLon:Number = dms_to_deg(long); var mp:MapPoint = new MapPoint(nLon, nLat, new SpatialReference(4326)); geometryService.project([mp], map.spatialReference); } else { // dont send any request as the required field(s) not completed coordinatesRequiredFieldsLabel.visible = true; coordinatesRequiredFieldsLabel.includeInLayout = true; if (long == "" && lat == "") { coordinatesRequiredFieldsLabel.text = getDefaultString("requiredFields") + " " + xLabel + ", " + yLabel; } else { coordinatesRequiredFieldsLabel.text = long == "" ? getDefaultString("requiredField") + " " + xLabel : getDefaultString("requiredField") + " " + yLabel; } } } catch (error:Error) { showMessage(error.message, false); } } private function projectCompleteHandler(event:GeometryServiceEvent):void { try { var long:String = txtLong.text; var lat:String = txtLat.text; var locateResult:LocateResult = new LocateResult(); locateResult.symbol = resultSymbol; locateResult.title = coordinatesLabel; locateResult.content = long + " " + lat; locateResult.link = ""; locateResult.selected = true; var mp:MapPoint = (event.result as Array)[0] as MapPoint; locateResult.point = mp; locateResultAC = new ArrayCollection([ locateResult ]); addSharedData(widgetTitle, locateResultAC); showLocation(locateResult); showMessage(locationsLabel + " " + locateResultAC.length, false); } catch (error:Error) { showMessage(error.message, false); } }<mx:TextInput id="txtLong" restrict="0-9\.\-\W\E\w\e" width="100%" enter="locateCoordinates()" text=""/>
<mx:TextInput id="txtLat" restrict="0-9\.\-\N\S\n\s" width="100%" enter="locateCoordinates()" text=""/>