<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
xmlns:sgw="library://www.supergeotek.com/sgw"
initialize="application1_initializeHandler(event)">
<fx:Script>
<![CDATA[
import Core.ICommand;
import Core.IDisplayTransformation;
import Core.ILayer;
import Core.ITool;
import Geometry.Envelope;
import Geometry.LineString;
import Geometry.LinearRing;
import Geometry.Point;
import Geometry.Polygon;
import MapLayer.MapCachedLayer;
import MapLayer.MapLayer;
import MapLayer.MapLayerEvents;
import MapLayer.MapLayerInner;
import Tool.PanTool;
import flash.display.Graphics;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import mx.collections.ArrayCollection;
import mx.containers.Canvas;
import mx.controls.Alert;
import mx.controls.Image;
import mx.events.FlexEvent;
import mx.utils.StringUtil;
import spark.components.BorderContainer;
import spark.components.HGroup;
import spark.components.Label;
import spark.components.Panel;
import spark.components.RadioButton;
import spark.components.RadioButtonGroup;
import spark.components.VGroup;
private var pg:Polygon = null;
private var m_GL:BorderContainer = null;
protected function application1_initializeHandler(event:FlexEvent):void
{
var pLyr:MapLayer = new MapLayer();
pLyr.addEventListener(MapLayerEvents.LOADED, maptilelayer1_LoadedHandler);
pLyr.Name = "SGW";
pLyr.Title = "SGW";
pLyr.ResourcePath="http://sgs.supergeo.com.tw/wcp/Agent.aspx";
}
protected function maptilelayer1_LoadedHandler(vEvent:MapLayerEvents):void
{
var pLyr:MapLayer = vEvent.currentTarget as MapLayer;
var pExt:Envelope = pLyr.Extent;
oMapBase.AddLayer(pLyr);
var pTrans:IDisplayTransformation = new LevelTransformation(256 / (pExt.Right - pExt.Left), 0, 15);
oMapBase.Transformation = pTrans as IDisplayTransformation;
var pExt1:Envelope = new Envelope(-10.278113, 61.939282, 34.180855, 35.526159) as Envelope;
oMapBase.ZoomMapTo(pExt1);
oMapBase.RefreshMap(true);
var pTl1:PanTool = new PanTool(true, true);
oMapBase.SelectMapTool(pTl1);
//Show the point layer attribute in text label
m_GL = new BorderContainer();
m_GL.left = 0;
m_GL.top = 0;
m_GL.width = 0;
m_GL.height = 0;
oMapBase.addElement(m_GL);
DisParFea();
//add map base event
oMapBase.addEventListener(MapControlEvents.REBUILT,UU);
}
protected function UU(vEvent:Event):void
{
DisParFea();
}
protected function DisParFea():void{
//get the layers
var pLayer:MapLayer = oMapBase.GetLayer(0) as MapLayer;
var pLayer2:MapLayerInner = pLayer.MapLayers[0];//get the first layer
//SQL query
pLayer2.ExecuteQuery("[CAPALT] = 0", false, req, null);
}
private function req(vEvent:Event):void
{
var pDoc:XML = new XML(vEvent.target.data as String);
var pNodes:XMLList = pDoc.child("Feature");
//clear the last time render
if (m_GL.numElements > 0)
m_GL.removeAllElements();
m_GL.contentGroup.graphics.clear();
for each (var pNode:XML in pNodes)
{
var pGeoms:XMLList = pNode.child("Geometry");
if (pGeoms != null)
{
var pGeom:XML = pGeoms[0];
var sWKT:String = pGeom.text();
m_GL.contentGroup.graphics.lineStyle(0,0x000000,1);
if (sWKT.substr(0, 5) == "POINT")
{
var po:Geometry.Point = new Geometry.Point(0, 0);
po.ImportFromWKT(sWKT);
//Draw Points on the map
var pt2:Geometry.Point = oMapBase.FromMapPoint(po.X,po.Y) as Geometry.Point;
if (pt2.X < 820 && pt2.X > 20 && pt2.Y < 500 && pt2.Y > 40){
var img1:Image = new Image();
img1.source = "./images/mark.png";
img1.left = pt2.X-5;
img1.top = pt2.Y-5;
img1.width=20;
img1.height=20;
img1.useHandCursor=true;
img1.mouseChildren=false ;
img1.buttonMode=true;
//get the value to popout information
var pValues2:XMLList = pNode.child("Values").children();
var pValue:XML = pValues2[4]; //the city name
//MOUSE_OVER EVENT
img1.addEventListener(MouseEvent.MOUSE_OVER, function():void{
pMouOv();
},false);
//MOUSE_OUT EVENT
img1.addEventListener(MouseEvent.MOUSE_OUT, function():void{
pMout();
},false);
m_GL.addElement(img1);
}
}
}
}
}
private function pMouOv():void
{
//Use the mouse xy to query the city data
var cltpt:Geometry.Point = new Geometry.Point(oMapBase.mouseX, oMapBase.mouseY);
var pt1:Geometry.Point = oMapBase.ToMapPoint(cltpt.X, cltpt.Y);
var pLayer:MapLayer = oMapBase.GetLayer(0) as MapLayer;
var pLayer2:MapLayerInner = pLayer.MapLayers[0]; //the first layer
var pgn:Polygon = new Polygon();
var R:Number = 1;
for (var a:int = 0; a <= 360; a += 30)
{
var xp:Number = pt1.X + Math.sin(a * Math.PI / 180.0) * R;
var yp:Number = pt1.Y + Math.cos(a * Math.PI / 180.0) * R;
pgn.ExteriorRing.AddPoint(new Geometry.Point(xp, yp));
}
pLayer2.ExecuteQuery(pgn.ExportToWKT(), true, GetXYInfo, null);
}
private function GetXYInfo(vEvent:Event):void
{
var pDoc:XML = new XML(vEvent.target.data as String);
var pNodes:XMLList = pDoc.child("Feature");
pBdr.removeAllElements();
for each (var pNode:XML in pNodes)
{
var pGeoms:XMLList = pNode.child("Geometry");
if (pGeoms != null)
{
var pGeom:XML = pGeoms[0];
var sWKT:String = pGeom.text();
if (sWKT.substr(0, 5) == "POINT")
{
var po:Geometry.Point = new Geometry.Point(0, 0);
po.ImportFromWKT(sWKT);
var po1:Geometry.Point = oMapBase.FromMapPoint(po.X,po.Y);
var pValues2:XMLList = pNode.child("Values").children();
//for each (var pValue2 : XML in pValues2)
var pValue:XML = pValues2[4];
var pRstL:Label = new Label();
pRstL.text = "";
pRstL.text = "\nLong:" + po.X + "\n" + "Lat:" + po.Y+ "\n" + pValue;
pBdr.x = po1.X+20;
pBdr.y = po1.Y-22;
pBdr.addElement(pRstL);
//add image for closing it
var img1:Image = new Image();
img1.source = "./images/Close.png";
img1.right = 0;
img1.width=13;
img1.height=13;
img1.useHandCursor=true;
img1.mouseChildren=false ;
img1.buttonMode=true;
img1.addEventListener(MouseEvent.CLICK, closeShowTipEvent,false);
pBdr.addElement(img1);
pBdr.visible = true;
}
}
}
}
protected function closeShowTipEvent(event:MouseEvent):void{
pBdr.visible = false;
}
private function pMout():void
{
pBdr.removeAllElements();
pBdr.visible = false;
}
]]>
</fx:Script>
<fx:Declarations>
</fx:Declarations>
<sgw:MapControl id="oMapBase" width="100%" height="100%">
</sgw:MapControl>
<sgw:ToolbarControl id="oToolbar" width="100%" height="40" Map="{oMapBase}">
</sgw:ToolbarControl>
<s:BorderContainer id="pBdr" visible="false" x="9" y="13" width="176" height="63" backgroundColor="#FFFFFF" borderWeight="2" cornerRadius="5" alpha="0.85">
<s:VGroup x="4" y="22" width="142">
</s:VGroup>
</s:BorderContainer>
<s:Label x="17" y="13" text="SuperGIS Server Flex Website Sample
--- Move mouse over icons to get info" fontWeight="bold" fontSize="30" color="#016B09" backgroundColor="#9ACD32" backgroundAlpha="0.7"/>
</s:Application>