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=""/>
Moussadak,
What version of the Viewer are you using?... Is this the standard locate widget you are talking about or some custom widget from the gallery?
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); //} }
Mou,
That does not make sense that you did not get an error this time but you did before. Are you typing something in the lat and lon different now?
Mou,
Do you have the Flash Player Debugger version installed? If not use this link to get the Flash Player Debugger.
http://www.adobe.com/support/flashplayer/downloads.html
It will help you get some real errors that you can debug.