1 <?xml version="1.0" encoding="utf-8"?>
3 xmlns:mx="http://www.adobe.com/2006/mxml"
4 layout="vertical" showCloseButton="true"
5 horizontalAlign="center" title="Search"
6 width="458" height="350" verticalGap="0" creationComplete="txtFind.setFocus()">
8 import flash.events.Event;
9 import mx.core.Application;
10 import mx.events.CloseEvent;
11 import mx.events.FlexEvent;
12 import mx.managers.PopUpManager;
13 import mx.rpc.events.ResultEvent;
14 import mx.rpc.http.HTTPService;
15 import mx.controls.Alert;
16 import mx.events.ListEvent;
18 import net.systemeD.halcyon.Globals;
20 private var nominatim:HTTPService = new HTTPService;
21 private var nominatimURL:String = "http://open.mapquestapi.com/nominatim/v1/search?"; // ** FIXME - this should be user-configurable
22 private var nomOptions:Object = { addressdetails:"1", limit:"10", format:"xml" };
23 private var selectedResult:Object = {lat: "0", lon: "0"};
26 private var searchResults:XMLList;
29 public function init():void {
30 PopUpManager.addPopUp(this, Application(Application.application), true);
31 PopUpManager.centerPopUp(this);
32 this.addEventListener(CloseEvent.CLOSE, findDialog_close);
34 var obj:SharedObject = SharedObject.getLocal("user_state");
38 private function findDialog_close(evt:CloseEvent):void {
39 PopUpManager.removePopUp(this);
42 private function goFetch(q:String):void {
44 var searchCall:String = nominatimURL;
45 for (var item:String in nomOptions) {
46 searchCall += item + "=";
47 searchCall += nomOptions[item] + "&";
49 searchCall += "q=" + q;
50 this.nominatim.url = searchCall
51 this.nominatim.addEventListener(ResultEvent.RESULT, goneFetched);
52 this.nominatim.resultFormat = 'e4x';
54 this.nominatim.send();
58 private function goneFetched(e:ResultEvent):void {
59 searchResults = e.result.* as XMLList;
62 protected function btnFind_clickHandler(event:MouseEvent):void {
63 goFetch(txtFind.text);
67 protected function txtFind_enterHandler(event:FlexEvent):void {
68 goFetch(txtFind.text);
71 private function setSelected(evt:ListEvent):void {
72 //Alert.show(evt.itemRenderer.data.@lat);
73 selectedResult = { lat: evt.itemRenderer.data.@lat, lon: evt.itemRenderer.data.@lon };
76 private function goToSelected():void {
77 Application.application.theMap.updateCoordsFromLatLon(selectedResult.lat, selectedResult.lon);
78 Application.application.theMap.download();
79 //Application.application.theMap.redraw();
80 PopUpManager.removePopUp(this);
87 <mx:HBox horizontalAlign="left" width="100%">
88 <mx:Label text="Enter place name: " />
89 <mx:TextInput id="txtFind" width="100%" enter="txtFind_enterHandler(event)"/>
90 <mx:Button label="Search" id="btnFind" click="btnFind_clickHandler(event)"/>
93 <mx:Spacer height="10"/>
95 <mx:DataGrid id="dgResults" dataProvider="{searchResults}" change="setSelected(event)" width="100%" height="100%">
97 <mx:DataGridColumn headerText="Name" dataField="@display_name" minWidth="200" />
98 <mx:DataGridColumn headerText="Type" dataField="@type"/>
99 <mx:DataGridColumn headerText="Class" dataField="@class"/>
100 <mx:DataGridColumn headerText="ID" dataField="@osm_id"/>
105 <mx:Label text="Results from Nominatim" />
106 <mx:Spacer width="100%"/>
107 <mx:Button label="Cancel" click="PopUpManager.removePopUp(this);" styleName="titleWindowButton" />
108 <mx:Button label="Jump to" click="goToSelected();" styleName="titleWindowButton" enabled="{dgResults.selectedItem != null? true : false}" />