[gmaps-utility-library-flash] r168 committed - ArcGISLink: donut hole support for polygon

8 views
Skip to first unread message

codesite...@google.com

unread,
Dec 18, 2009, 7:06:57 PM12/18/09
to google-maps-api-for-fla...@googlegroups.com
Revision: 168
Author: nianwei
Date: Fri Dec 18 16:06:07 2009
Log: ArcGISLink: donut hole support for polygon
http://code.google.com/p/gmaps-utility-library-flash/source/detail?r=168

Added:
/trunk/examples/ArcGISLink/bin-release/DonutHole.html
/trunk/examples/ArcGISLink/bin-release/DonutHole.swf
/trunk/examples/ArcGISLink/src/DonutHole.mxml
Modified:
/trunk/src/com/google/maps/extras/arcgislink/ArcGISUtil.as

=======================================
--- /dev/null
+++ /trunk/examples/ArcGISLink/bin-release/DonutHole.html Fri Dec 18
16:06:07 2009
@@ -0,0 +1,121 @@
+<!-- saved from url=(0014)about:internet -->
+<html lang="en">
+
+<!--
+Smart developers always View Source.
+
+This application was built using Adobe Flex, an open source framework
+for building rich Internet applications that get delivered via the
+Flash Player or to desktops via Adobe AIR.
+
+Learn more about Flex at http://flex.org
+// -->
+
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+
+<!-- BEGIN Browser History required section -->
+<link rel="stylesheet" type="text/css" href="history/history.css" />
+<!-- END Browser History required section -->
+
+<title></title>
+<script src="AC_OETags.js" language="javascript"></script>
+
+<!-- BEGIN Browser History required section -->
+<script src="history/history.js" language="javascript"></script>
+<!-- END Browser History required section -->
+
+<style>
+body { margin: 0px; overflow:hidden }
+</style>
+<script language="JavaScript" type="text/javascript">
+<!--
+//
-----------------------------------------------------------------------------
+// Globals
+// Major version of Flash required
+var requiredMajorVersion = 10;
+// Minor version of Flash required
+var requiredMinorVersion = 0;
+// Minor version of Flash required
+var requiredRevision = 0;
+//
-----------------------------------------------------------------------------
+// -->
+</script>
+</head>
+
+<body scroll="no">
+<script language="JavaScript" type="text/javascript">
+<!--
+// Version check for the Flash Player that has the ability to start Player
Product Install (6.0r65)
+var hasProductInstall = DetectFlashVer(6, 0, 65);
+
+// Version check based upon the values defined in globals
+var hasRequestedVersion = DetectFlashVer(requiredMajorVersion,
requiredMinorVersion, requiredRevision);
+
+if ( hasProductInstall && !hasRequestedVersion ) {
+ // DO NOT MODIFY THE FOLLOWING FOUR LINES
+ // Location visited after installation is complete if installation is
required
+ var MMPlayerType = (isIE == true) ? "ActiveX" : "PlugIn";
+ var MMredirectURL = window.location;
+ document.title = document.title.slice(0, 47) + " - Flash Player
Installation";
+ var MMdoctitle = document.title;
+
+ AC_FL_RunContent(
+ "src", "playerProductInstall",
+
"FlashVars", "MMredirectURL="+MMredirectURL+'&MMplayerType='+MMPlayerType+'&MMdoctitle='+MMdoctitle+"",
+ "width", "100%",
+ "height", "100%",
+ "align", "middle",
+ "id", "DonutHole",
+ "quality", "high",
+ "bgcolor", "#869ca7",
+ "name", "DonutHole",
+ "allowScriptAccess","sameDomain",
+ "type", "application/x-shockwave-flash",
+ "pluginspage", "http://www.adobe.com/go/getflashplayer"
+ );
+} else if (hasRequestedVersion) {
+ // if we've detected an acceptable version
+ // embed the Flash Content SWF when all tests are passed
+ AC_FL_RunContent(
+ "src", "DonutHole",
+ "width", "100%",
+ "height", "100%",
+ "align", "middle",
+ "id", "DonutHole",
+ "quality", "high",
+ "bgcolor", "#869ca7",
+ "name", "DonutHole",
+ "allowScriptAccess","sameDomain",
+ "type", "application/x-shockwave-flash",
+ "pluginspage", "http://www.adobe.com/go/getflashplayer"
+ );
+ } else { // flash is too old or we can't detect the plugin
+ var alternateContent = 'Alternate HTML content should be placed here. '
+ + 'This content requires the Adobe Flash Player. '
+ + '<a href=http://www.adobe.com/go/getflash/>Get Flash</a>';
+ document.write(alternateContent); // insert non-flash content
+ }
+// -->
+</script>
+<noscript>
+ <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ id="DonutHole" width="100%" height="100%"
+
codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab">
+ <param name="movie" value="DonutHole.swf" />
+ <param name="quality" value="high" />
+ <param name="bgcolor" value="#869ca7" />
+ <param name="allowScriptAccess" value="sameDomain" />
+ <embed src="DonutHole.swf" quality="high" bgcolor="#869ca7"
+ width="100%" height="100%" name="DonutHole" align="middle"
+ play="true"
+ loop="false"
+ quality="high"
+ allowScriptAccess="sameDomain"
+ type="application/x-shockwave-flash"
+ pluginspage="http://www.adobe.com/go/getflashplayer">
+ </embed>
+ </object>
+</noscript>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/examples/ArcGISLink/bin-release/DonutHole.swf Fri Dec 18
16:06:07 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/examples/ArcGISLink/src/DonutHole.mxml Fri Dec 18 16:06:07 2009
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
+ layout="absolute"
+ width="100%"
+ height="100%">
+ <mx:Panel title="Layer Query: After load you should see NC county
polygons, mouse over for names and highlight, click for data"
+ width="100%"
+ height="100%">
+ <maps:Map xmlns:maps="com.google.maps.*"
+ id="map"
+ mapevent_mapready="onMapReady(event)"
+ width="100%"
+ height="100%"
+
key="ABQIAAAA7QUChpcnvnmXxsjC7s1fCxQGj0PqsCtxKvarsoS-iqLdqZSKfxTd7Xf-2rEc_PC9o8IsJde80Wnj4g"/>
+ </mx:Panel>
+
+ <mx:Script>
+ <![CDATA[
+ import mx.controls.Alert;
+ import com.google.maps.controls.*;
+ import com.google.maps.overlays.*;
+ import com.google.maps.*;
+ import com.google.maps.interfaces.*;
+
+ import com.google.maps.extras.arcgislink.*;
+
+
+
+ private var layer:Layer;
+ private var hStyle:OverlayOptions=new OverlayOptions({polygon: new
PolygonOptions({fillStyle: {color: 0xffff00, alpha: 0.35}, strokeStyle:
{color: 0xFF0000, thickness: 4}})});
+ private var style:OverlayOptions=new OverlayOptions({polygon: new
PolygonOptions({fillStyle: {color: 0x888888, alpha: 0.35}, strokeStyle:
{color: 0x0000ff, thickness: 1}})});
+
+ private function onMapReady(event:Event):void {
+ map.setCenter(new LatLng(51.3, 10.75), 8);
+ map.addControl(new com.google.maps.controls.MapTypeControl());
+ map.addControl(new NavigationControl());
+ map.enableScrollWheelZoom();
+ map.enableContinuousZoom();
+ //layer=new
Layer('http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Demographics/ESRI_Census_USA/MapServer/3');
+ layer=new
Layer('http://labs.alta4gis.de/arcgis/rest/services/gmaps/MapServer/0');
+ layer.addEventListener(ServiceEvent.LOAD, initFunctionality);
+ }
+
+ private function initFunctionality(evt:Event):void {
+ var params:QueryParameters=new QueryParameters({returnGeometry:
true, where: "1=1", outFields: ["NAME"]});
+ layer.query(params, processResultSet, handleError, style);
+ }
+
+ private function processResultSet(rs:ResultSet):void {
+ var fs:Array=rs.features;
+ for (var i:int=0, c:int=fs.length; i < c; i++) {
+ var ovs:Array=createGPolys(fs[i], rs.spatialReference);
+ for (var j:int=0; j < ovs.length; j++) {
+ map.addOverlay(ovs[j]);
+ }
+ }
+ }
+
+ private function createGPolys(feat:Feature,
sr:SpatialReference):Array {
+ var a:*=feat.attributes;
+ var ovs:Array=feat.geometry;
+ var html:String="<div id='iwdiv'><b>" + a['NAME'] + "</b></div>";
+ // note it is possible each feature has more than one poly.
+ for (var j:int=0, jc:int=ovs.length; j < jc; j++) {
+ var ov:Polygon=ovs[j] as Polygon;
+ ov.addEventListener(MapMouseEvent.ROLL_OVER,
function(event:MapMouseEvent):void {
+ for (var i:int=0, ic:int=ovs.length; i < ic; i++) {
+ (ovs[i] as Polygon).setOptions(hStyle.polygon);
+ }
+ });
+ ov.addEventListener(MapMouseEvent.ROLL_OUT,
function(event:MapMouseEvent):void {
+ for (var i:int=0, ic:int=ovs.length; i < ic; i++) {
+ (ovs[i] as Polygon).setOptions(style.polygon);
+ }
+ });
+ ov.addEventListener(MapMouseEvent.CLICK,
function(event:MapMouseEvent):void {
+ map.openInfoWindow(event.latLng, new
InfoWindowOptions({contentHTML: html}));
+ });
+ }
+ return ovs;
+ }
+
+ private function handleError(err:ServiceError):void {
+ mx.controls.Alert.show(err.toString());
+ }
+ ]]>
+ </mx:Script>
+</mx:Application>
=======================================
--- /trunk/src/com/google/maps/extras/arcgislink/ArcGISUtil.as Wed Jul 22
13:43:09 2009
+++ /trunk/src/com/google/maps/extras/arcgislink/ArcGISUtil.as Fri Dec 18
16:06:07 2009
@@ -7,12 +7,11 @@
*/
package com.google.maps.extras.arcgislink {

- import com.google.maps.extras.arcgislink.json.*;
-
import com.google.maps.*;
+ import com.google.maps.extras.arcgislink.json.*;
import com.google.maps.interfaces.IOverlay;
import com.google.maps.overlays.*;
-
+
import flash.events.*;
import flash.geom.Point;
import flash.net.*;
@@ -174,6 +173,7 @@
// multipoint
lnglat=sr.reverse(part);
ov=new Marker(new LatLng(lnglat[1], lnglat[0]),
overlayOptions.marker);
+ ovs.push(ov);
} else {
if (part.length > ArcGISConfig.maxPolyPoints) {
// TODO: do a simple point reduction
@@ -185,17 +185,23 @@
glatlngs.push(new LatLng(lnglat[1], lnglat[0]));
}
if (geom.paths) {
-
- ov=new Polyline(glatlngs, overlayOptions.polyline); //new
PolylineOptions({strokeStyle: style.strokeStyle}));
+ ov=new Polyline(glatlngs, overlayOptions.polyline); //new
PolylineOptions({strokeStyle: style.strokeStyle}));
+ ovs.push(ov);
} else if (geom.rings) {
overlayOptions.polygon=overlayOptions.polygon || new
PolygonOptions();
overlayOptions.polygon.tooltip=title;
- ov=new Polygon(glatlngs, overlayOptions.polygon); //new
PolygonOptions({strokeStyle: style.strokeStyle, fillStyle: style.fillStyle,
tooltip: title})); //, style.outlineColor, style.outlineWeight,
style.outlineOpacity, style.fillColor, style.fillOpacity);
+ if (ov == null) {
+ ov=new Polygon(glatlngs, overlayOptions.polygon); //new
PolygonOptions({strokeStyle: style.strokeStyle, fillStyle: style.fillStyle,
tooltip: title})); //, style.outlineColor, style.outlineWeight,
style.outlineOpacity, style.fillColor, style.fillOpacity);
+ ovs.push(ov);
+ } else {
+ (ov as Polygon).setPolyline(i, glatlngs);
+ }
}
}
- ovs.push(ov);
+
}
}
+
return ovs;
}

Reply all
Reply to author
Forward
0 new messages