2011年08月04日 星期四

ArcGIS Google Map 增加虚拟图层

<?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"
xmlns:supportClasses
="com.esri.ags.skins.supportClasses.*"
xmlns:flash
="flash.text.*"
xmlns:arcgis
="cn.com.vistech.arcgis.*"
xmlns:esri
="http://www.esri.com/2008/ags">
<fx:Declarations>
<esri:SimpleMarkerSymbol id="citySymbol"
alpha
="0.8"
color
="0xDDDD00"
size
="6"
style
="circle">
<esri:SimpleLineSymbol width="2"
alpha
="1"
color
="0xDD0000"
style
="solid"/>
</esri:SimpleMarkerSymbol>
<esri:SimpleFillSymbol color="0xFFFFFF"
alpha
="0.5"
style
="solid"
id
="mySymbol">
<esri:SimpleLineSymbol color="0xFFFFFF"
width
="0"
alpha
="0.5"
style
="solid"/>
</esri:SimpleFillSymbol>
<esri:TextSymbol id="nanjing"
text
="南京"
placement
="above"
xoffset
="1"
yoffset
="3"
color
="0x666666"
border
="false"
borderColor
="0x000000"
background
="false"
backgroundColor
="0xFFFFFF">
<flash:TextFormat size="13"
font
="宋体"
bold
="true"
italic
="false"
underline
="false"/>
</esri:TextSymbol>
<esri:MapImageLayer id="viso"
alpha
="0.5">
</esri:MapImageLayer>
</fx:Declarations>
<esri:Map id="map"
logoVisible
="false"
openHandCursorVisible
="false"
scaleBarVisible
="false"
zoomSliderVisible
="false"
load
="loadHandler()">
<arcgis:GoogleMapLayer/>
<esri:GraphicsLayer symbol="{citySymbol}">
<esri:Graphic symbol="{nanjing}">
<esri:geometry>
<esri:MapPoint x="13221159.886688277"
y
="3769799.519742769"/>
</esri:geometry>
</esri:Graphic>
<esri:Graphic>
<esri:geometry>
<esri:MapPoint x="13221159.886688277"
y
="3769799.519742769"
id
="js"/>
</esri:geometry>
</esri:Graphic>

<esri:Graphic>
<esri:geometry>
<esri:MapPoint x="12801741.44122646"
y
="3606802.4843253596"/>
</esri:geometry>
</esri:Graphic>
<esri:Graphic>
<esri:geometry>
<esri:MapPoint x="13692297.36757265"
y
="4191093.670273363"/>
</esri:geometry>
</esri:Graphic>

<esri:Graphic>
<esri:geometry>
<esri:MapPoint x="12801741.44122646"
y
="4191093.670273363"/>
</esri:geometry>
</esri:Graphic>
<esri:Graphic>
<esri:geometry>
<esri:MapPoint x="13692297.36757265"
y
="3606802.4843253596"/>
</esri:geometry>
</esri:Graphic>
<esri:Graphic symbol="{mySymbol}">
<esri:Polygon spatialReference="{new SpatialReference(102113)}">
<fx:Array>
<fx:Array>
<esri:MapPoint id="a1"
x
="-20037508.342787"
y
="-20037508.342787"/>
<esri:MapPoint id="b1"
x
="-20037508.342787"
y
="3575001"/>
<esri:MapPoint id="a3"
x
="20037508.342787"
y
="3575001"/>
<esri:MapPoint id="a4"
x
="20037508.342787"
y
="-20037508.342787"/>
</fx:Array>
</fx:Array>
</esri:Polygon>
</esri:Graphic>
<esri:Graphic symbol="{mySymbol}">
<esri:Polygon spatialReference="{new SpatialReference(102113)}">
<fx:Array>
<fx:Array>
<esri:MapPoint id="y1"
x
="-20037508.342787"
y
="4204007"/>
<esri:MapPoint id="y2"
x
="-20037508.342787"
y
="20037508.342787"/>
<esri:MapPoint id="y3"
x
="-20037508.342787"
y
="20037508.342787"/>
<esri:MapPoint id="y4"
x
="20037508.342787"
y
="4204007"/>
</fx:Array>
</fx:Array>
</esri:Polygon>
</esri:Graphic>
<esri:Graphic symbol="{mySymbol}">
<esri:Polygon spatialReference="{new SpatialReference(102113)}">
<fx:Array>
<fx:Array>
<esri:MapPoint id="u1"
x
="-20037508.342787"
y
="4204007"/>
<esri:MapPoint id="u2"
x
="12783210"
y
="4204007"/>
<esri:MapPoint id="u3"
x
="12783210"
y
="3575001"/>
<esri:MapPoint id="u4"
x
="-20037508.342787"
y
="3575001"/>
</fx:Array>
</fx:Array>
</esri:Polygon>
</esri:Graphic>
<esri:Graphic symbol="{mySymbol}">
<esri:Polygon spatialReference="{new SpatialReference(102113)}">
<fx:Array>
<fx:Array>
<esri:MapPoint id="t1"
x
="13703667"
y
="4204007"/>
<esri:MapPoint id="t2"
x
="13703667"
y
="3575001"/>
<esri:MapPoint id="t3"
x
="20037508.342787"
y
="3575001"/>
<esri:MapPoint id="t4"
x
="20037508.342787"
y
="4204007"/>
</fx:Array>
</fx:Array>
</esri:Polygon>
</esri:Graphic>
</esri:GraphicsLayer>
</esri:Map>

<s:Button label="按钮"
click
="button1_clickHandler(event)"
top
="10"
right
="10"/>
<s:Panel x="29"
y
="19"
width
="1082"
height
="200">
<s:Label fontWeight="bold"
text
="Current map extent:"
x
="15"
y
="10"/>
<s:RichEditableText editable="false"
text
='xmin="{map.extent.xmin.toFixed(0)}" ymin="{map.extent.ymin.toFixed(0)}" xmax="{map.extent.xmax.toFixed(0)}" ymax="{map.extent.ymax.toFixed(0)}" (wkid="{map.spatialReference.wkid}")'
x
="9"
y
="135"/>
<s:Label fontWeight="bold"
text
="Current map extent (in geographic):"
x
="23"
y
="53"/>
<s:RichEditableText editable="false"
text
="{showExtentInGeographic(map.extent)}"
x
="10"
y
="110"/>
<s:Label fontWeight="bold"
text
="Current Mouse Coordinates:"
x
="10"
y
="73"/>
<s:RichEditableText id="mousecoords"
editable
="false"
text
="Move the mouse over the map to see its current coordinates..."
x
="10"
y
="93"/>
<s:Label fontWeight="bold"
text
="Current map scale is"
x
="10"
y
="33"/>
<s:RichEditableText editable="false"
text
="1:{map.scale.toFixed(0)} (level {map.level})"
x
="14"
y
="-24"/>
</s:Panel>
<fx:Script>
<![CDATA[
import com.esri.ags.SpatialReference;
import com.esri.ags.events.MapEvent;
import com.esri.ags.geometry.Extent;
import com.esri.ags.layers.supportClasses.MapImage;
import com.esri.ags.utils.WebMercatorUtil;

import mx.controls.Alert;
import mx.core.FlexGlobals;

protected function button1_clickHandler(event:MouseEvent):void
{

var zx:MapPoint
=new MapPoint(114.859, 35.32);
var ys:MapPoint
=new MapPoint(124.155, 41.25);
zx
=WebMercatorUtil.geographicToWebMercator(zx) as MapPoint;
ys
=WebMercatorUtil.geographicToWebMercator(ys) as MapPoint;

viso.removeAll();
var visoMapImage:MapImage
=new MapImage();
visoMapImage.href
="http://10.32.22.250:8080/appServices/emf2vec/visoface-gis.swf?r=" + new Date().getMilliseconds();
var extent:Extent
=new Extent(12783205.393024608, 4204003.347074539, 13827701.37943888, 4989446.834623009, new SpatialReference(102113));
visoMapImage.extent
=extent;
viso.add(visoMapImage);
FlexGlobals.topLevelApplication.map.addLayer(viso);
}

private function loadHandler():void
{
map.centerAt(js);
map.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveHandler);
}

// ... show coordinates of current (mouse) location
private function mouseMoveHandler(event:MouseEvent):void
{
const mapPoint:MapPoint=map.toMapFromStage(event.stageX, event.stageY);
const latlong:MapPoint=WebMercatorUtil.webMercatorToGeographic(mapPoint) as MapPoint;
mousecoords.text
="x,y is " + mapPoint.x.toFixed(0) + "," + mapPoint.y.toFixed(0) + " and Lat/Long is: " + latlong.y.toFixed(6) + " / " + latlong.x.toFixed(6);
}

// convert current projected extent to geographic and show as such
protected function showExtentInGeographic(extent:Extent):String
{
const geoExtent:Extent=WebMercatorUtil.webMercatorToGeographic(map.extent) as Extent;
// return geoExtent.toString() + ".." ;
return " " + geoExtent.xmin.toFixed(6) + ", " + geoExtent.ymin.toFixed(6) + ", " + geoExtent.xmax.toFixed(6) + ", " + geoExtent.ymax.toFixed(6) + " (wkid: " + geoExtent.spatialReference.wkid + ")";
}
]]
>
</fx:Script>
</s:Application>