<?xml version="1.0" encoding="utf-8"?>
<mx:Application
xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:gm="com.google.maps.*"
backgroundGradientColors="[0xFFFFFF, 0xAAAAAA]"
height="100%" width="100%" viewSourceURL="srcview/index.html">
<gm:Map id="map"
width="100%"
height="100%"
key="(Your API Key Here)"
mapevent_mapready="map_mapReady(event)" />
<mx:Script>
<![CDATA[
import com.adobe.serialization.json.JSON;
import com.google.maps.LatLng;
import com.google.maps.LatLngBounds;
import com.google.maps.Map;
import com.google.maps.MapMoveEvent;
import com.google.maps.MapType;
import com.google.maps.controls.OverviewMapControl;
import com.google.maps.controls.ScaleControl;
import com.google.maps.controls.ZoomControl;
import com.google.maps.controls.PositionControl;
import com.google.maps.controls.MapTypeControl;
import com.google.maps.overlays.Polygon;
import com.google.maps.overlays.PolygonOptions;
import com.google.maps.styles.FillStyle;
import com.google.maps.styles.StrokeStyle;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
private var parcelsUrl:String = "http://sampleserver1.arcgisonline.com/" +
"ArcGIS/rest/services/Portland/ESRI_LandBase_WebMercator/MapServer/1/query";
private var wgs84wkid:String = "4236";
private var toolTipField:String = "RNO";
private var parcelsService:HTTPService = new HTTPService();
private var transparentFill:FillStyle;
private var greyStroke:StrokeStyle;
private var whiteStroke:StrokeStyle;
private function map_mapReady(event:Event):void {
transparentFill = new FillStyle({
alpha: 0.0 });
greyStroke = new StrokeStyle({
alpha: 1.0,
thickness: 1.5,
color: 0x333333 });
whiteStroke = new StrokeStyle({
alpha: 1.0,
thickness: 1.5,
color: 0xffffff });
var mtc:MapTypeControl = new MapTypeControl();
map.addControl(mtc);
var pc:PositionControl = new PositionControl();
map.addControl(pc);
var zc:ZoomControl = new ZoomControl();
map.addControl(zc);
var sc:ScaleControl = new ScaleControl();
map.addControl(sc);
var omc:OverviewMapControl = new OverviewMapControl();
map.addControl(omc);
map.addEventListener(MapMoveEvent.MOVE_END, map_moveEnd);
map.setCenter(new LatLng(45.520211, -122.65553), 17,
MapType.NORMAL_MAP_TYPE);
}
private function map_moveEnd(event:MapMoveEvent):void {
var zoom:Number = map.getZoom();
trace("map_moveEnd - Zoom level: " + zoom.toString());
if (zoom < 17) {
map.clearOverlays();
return;
}
var bnds:LatLngBounds = map.getLatLngBounds();
var envelope:String = bnds.getWest().toString() + "," +
bnds.getSouth().toString() + "," +
bnds.getEast().toString() + "," +
bnds.getNorth().toString();
trace("map_moveEnd - Envelope: " + envelope);
parcelsService.cancel();
parcelsService.url = parcelsUrl;
parcelsService.addEventListener(ResultEvent.RESULT, onParcelResult);
parcelsService.addEventListener(FaultEvent.FAULT, onHttpFault);
var params:Object = new Object();
params.geometry = envelope;
params.geometryType = "esriGeometryEnvelope";
params.inSR = wgs84wkid;
params.spatialRel = "esriSpatialRelIntersects";
params.returnGeometry = "true";
params.outSR = wgs84wkid;
params.outFields = toolTipField;
params.f = "json";
parcelsService.send(params);
}
private function onParcelResult(event:ResultEvent):void {
var obj:Object = JSON.decode(event.result as String);
if (obj.error != null) {
Alert.show('An error occured on the server. The response message returned was:\n\n' +
event.result, 'Server Error');
return;
}
map.clearOverlays();
var features:Array = obj.features as Array;
for each (var feature:Object in features) {
for each (var ring:Array in feature.geometry.rings) {
var points:Array = new Array();
for each (var point:Array in ring) {
points.push(new LatLng(point[1], point[0]));
}
var polyOpts:PolygonOptions = new PolygonOptions();
polyOpts.fillStyle = transparentFill;
polyOpts.strokeStyle =
(map.getCurrentMapType() == MapType.NORMAL_MAP_TYPE ?
greyStroke : whiteStroke);
polyOpts.tooltip = feature.attributes[toolTipField];
var poly:Polygon = new Polygon(points, polyOpts);
map.addOverlay(poly);
}
}
}
private function onHttpFault(event:FaultEvent):void {
Alert.show(event.toString(), "HttpFault");
}
]]>
</mx:Script>
</mx:Application>