You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by pe...@apache.org on 2015/12/14 17:58:40 UTC
git commit: [flex-asjs] [refs/heads/core_js_to_as] - Back port of
GoogleMaps FlexJS project.
Repository: flex-asjs
Updated Branches:
refs/heads/core_js_to_as 46e3dc61a -> 5f4274856
Back port of GoogleMaps FlexJS project.
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/5f427485
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/5f427485
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/5f427485
Branch: refs/heads/core_js_to_as
Commit: 5f427485663076183d2c466985640a633ab64174
Parents: 46e3dc6
Author: Peter Ent <pe...@apache.org>
Authored: Mon Dec 14 11:58:37 2015 -0500
Committer: Peter Ent <pe...@apache.org>
Committed: Mon Dec 14 11:58:37 2015 -0500
----------------------------------------------------------------------
frameworks/projects/GoogleMaps/as/defaults.css | 5 +-
.../GoogleMaps/as/src/GoogleMapsClasses.as | 3 +
.../src/org/apache/flex/maps/google/Geometry.as | 30 --
.../org/apache/flex/maps/google/GoogleMap.as | 138 ++++++
.../src/org/apache/flex/maps/google/LatLng.as | 30 --
.../as/src/org/apache/flex/maps/google/Map.as | 233 ----------
.../src/org/apache/flex/maps/google/Marker.as | 32 --
.../as/src/org/apache/flex/maps/google/Place.as | 43 --
.../flex/maps/google/beads/GoogleMapView.as | 435 +++++++++++++++++++
.../apache/flex/maps/google/beads/MapView.as | 154 ++++---
.../apache/flex/maps/google/models/MapModel.as | 39 +-
frameworks/projects/GoogleMaps/build.xml | 120 +++--
.../projects/GoogleMaps/compile-asjs-config.xml | 70 +++
.../projects/GoogleMaps/compile-config.xml | 1 +
.../projects/GoogleMaps/google-manifest.xml | 2 +-
15 files changed, 852 insertions(+), 483 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/defaults.css
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/defaults.css b/frameworks/projects/GoogleMaps/as/defaults.css
index 6c260d5..260517a 100644
--- a/frameworks/projects/GoogleMaps/as/defaults.css
+++ b/frameworks/projects/GoogleMaps/as/defaults.css
@@ -19,9 +19,10 @@
@namespace g "library://ns.apache.org/flexjs/google";
-g|Map
+g|GoogleMap
{
- IBeadView: ClassReference("org.apache.flex.maps.google.beads.MapView");
+ IBeadView: ClassReference("org.apache.flex.maps.google.beads.GoogleMapView");
+ IBeadModel: ClassReference("org.apache.flex.maps.google.models.MapModel");
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/GoogleMapsClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/GoogleMapsClasses.as b/frameworks/projects/GoogleMaps/as/src/GoogleMapsClasses.as
index cd424fe..6445519 100644
--- a/frameworks/projects/GoogleMaps/as/src/GoogleMapsClasses.as
+++ b/frameworks/projects/GoogleMaps/as/src/GoogleMapsClasses.as
@@ -27,6 +27,9 @@ package
*/
internal class GoogleMapsClasses
{
+ import org.apache.flex.maps.google.GoogleMap; GoogleMap;
+ import org.apache.flex.maps.google.models.MapModel; MapModel;
+ import org.apache.flex.maps.google.beads.GoogleMapView; GoogleMapView;
}
}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Geometry.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Geometry.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Geometry.as
deleted file mode 100644
index 4546bf0..0000000
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Geometry.as
+++ /dev/null
@@ -1,30 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.maps.google
-{
- public class Geometry
- {
- public function Geometry()
- {
- location = new LatLng();
- }
-
- public var location:LatLng;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/GoogleMap.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/GoogleMap.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/GoogleMap.as
new file mode 100644
index 0000000..64ae26b
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/GoogleMap.as
@@ -0,0 +1,138 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.maps.google
+{
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.core.IBeadView;
+ import org.apache.flex.core.UIBase;
+ import org.apache.flex.core.ValuesManager;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.maps.google.beads.GoogleMapView;
+ import org.apache.flex.maps.google.models.MapModel;
+
+ COMPILE::JS {
+ import google.maps.LatLng;
+ import google.maps.Marker;
+ import org.apache.flex.core.WrappedHTMLElement;
+ }
+
+ [Event(name="ready", type="org.apache.flex.events.Event")]
+ [Event(name="centered", type="org.apache.flex.events.Event")]
+ [Event(name="boundsChanged", type="org.apache.flex.events.Event")]
+ [Event(name="zoomChanged", type="org.apache.flex.events.Event")]
+ [Event(name="dragEnd", type="org.apache.flex.events.Event")]
+ [Event(name="searchResult", type="org.apache.flex.events.Event")]
+
+ /**
+ * The Map class displays a Google Map centered on lat/lng coordinates. The Map uses
+ * the following bead type:
+ *
+ * org.apache.flex.maps.beads.MapView: Uses HTMLLoader to display the map.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ * @flexjsignoreimport goog.bind
+ * @flexjsignoreimport google.maps.event
+ */
+ public class GoogleMap extends UIBase
+ {
+
+ public function GoogleMap()
+ {
+ super();
+
+ className = "Map";
+
+ var model:IBeadModel = getBeadByType(IBeadModel) as IBeadModel;
+ if (model == null) {
+ model = new MapModel();
+ addBead(model);
+ }
+ }
+
+ public function get token():String
+ {
+ return MapModel(model).token;
+ }
+ public function set token(value:String):void
+ {
+ MapModel(model).token = value;
+ }
+
+ COMPILE::JS
+ public function get selectedMarker():Marker
+ {
+ return MapModel(model).selectedMarker;
+ }
+
+ public function get searchResults():Array
+ {
+ return MapModel(model).searchResults;
+ }
+
+ public function loadMap( centerLat:Number, centerLong:Number, zoom:Number ) : void
+ {
+ GoogleMapView(view).mapit(centerLat, centerLong, zoom);
+ }
+
+ public function setZoom(zoomLevel:Number):void
+ {
+ MapModel(model).zoom = zoomLevel;
+ }
+
+ public function centerOnAddress(address:String):void
+ {
+ GoogleMapView(view).centerOnAddress(address);
+ }
+
+ COMPILE::JS
+ public function setCenter(location:LatLng):void
+ {
+ GoogleMapView(view).setCenter(location);
+ }
+
+ public function markCurrentLocation():void
+ {
+ GoogleMapView(view).markCurrentLocation();
+ }
+
+ public function markAddress(address:String):void
+ {
+ GoogleMapView(view).markAddress(address);
+ }
+
+ COMPILE::JS
+ public function createMarker(location:LatLng):Marker
+ {
+ return GoogleMapView(view).createMarker(location);
+ }
+
+ public function nearbySearch(placeName:String):void
+ {
+ GoogleMapView(view).nearbySearch(placeName);
+ }
+
+ public function clearSearchResults():void
+ {
+ GoogleMapView(view).clearSearchResults();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/LatLng.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/LatLng.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/LatLng.as
deleted file mode 100644
index 80e688c..0000000
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/LatLng.as
+++ /dev/null
@@ -1,30 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.maps.google
-{
- public class LatLng
- {
- public function LatLng()
- {
- }
-
- public var lat:Number;
- public var lng:Number;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Map.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Map.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Map.as
deleted file mode 100644
index 1d289a7..0000000
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Map.as
+++ /dev/null
@@ -1,233 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.maps.google
-{
- import org.apache.flex.core.IBeadModel;
- import org.apache.flex.core.IBeadView;
- import org.apache.flex.core.UIBase;
- import org.apache.flex.core.ValuesManager;
- import org.apache.flex.maps.google.beads.MapView;
- import org.apache.flex.maps.google.models.MapModel;
-
- [Event(name="ready", type="org.apache.flex.events.Event")]
- [Event(name="centered", type="org.apache.flex.events.Event")]
- [Event(name="boundsChanged", type="org.apache.flex.events.Event")]
- [Event(name="zoomChanged", type="org.apache.flex.events.Event")]
- [Event(name="dragEnd", type="org.apache.flex.events.Event")]
- [Event(name="searchResult", type="org.apache.flex.events.Event")]
-
- /**
- * The Map class displays a Google Map centered on lat/lng coordinates. The Map uses
- * the following bead type:
- *
- * org.apache.flex.maps.beads.MapView: Uses HTMLLoader to display the map.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public class Map extends UIBase
- {
- /**
- * constructor.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function Map()
- {
- super();
-
- var model:IBeadModel = getBeadByType(IBeadModel) as IBeadModel;
- if (model == null) {
- model = new MapModel();
- addBead(model);
- }
- }
-
- private var _token:String;
-
- /**
- * The Google API developer token.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function set token(value:String):void
- {
- _token = value;
- }
- /**
- * @private
- */
- public function get token():String
- {
- return _token;
- }
-
- public var searchResults:Array;
-
- /**
- * The marker last selected.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function get selectedMarker():Marker
- {
- return MapModel(model).selectedMarker;
- }
-
- /**
- * Loads a map centered on the given latitude and longitude coodinates at the
- * zoom level provided.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function loadMap( centerLat:Number, centerLong:Number, zoom:Number ) : void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.mapit(centerLat, centerLong, zoom);
- }
- }
-
- /**
- * Sets the magnification level on the map with 1 being the lowest level
- * (essentially the entire world) and 14 being very zoomed.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function setZoom( zoom:Number ) : void
- {
- MapModel(model).zoom = zoom;
- }
-
- /**
- * Centers the map on the address given.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function centerOnAddress( address:String ) : void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.centerOnAddress(address);
- }
- }
-
- /**
- * Centers the map on a specific location.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function setCenter( location:LatLng ) : void
- {
- var geo:Geometry = new Geometry();
- geo.location = location;
- MapModel(model).currentLocation = geo;
- }
-
- /**
- * Marks the current center of the map.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function markCurrentLocation() : void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.markCurrentLocation();
- }
- }
-
- /**
- * Performs a search near the center of map. The result is a set of
- * markers displayed on the map.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function nearbySearch(placeName:String):void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.nearbySearch(placeName);
- }
- }
-
- /**
- * Clears the search result markers from the map.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function clearSearchResults():void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.removeAllMarkers();
- }
- MapModel(model).searchResults = [];
- }
-
- /**
- * Translates the given address into a geo-location, moves the map to
- * that location, and places a marker on that location.
- *
- * @langversion 3.0
- * @playerversion Flash 10.2
- * @playerversion AIR 2.6
- * @productversion FlexJS 0.0
- */
- public function markAddress( address:String ) : void
- {
- var viewBead:MapView = getBeadByType(IBeadView) as MapView;
- if (viewBead) {
- viewBead.geoCodeAndMarkAddress(address);
- }
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Marker.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Marker.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Marker.as
deleted file mode 100644
index 9c7ff0d..0000000
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Marker.as
+++ /dev/null
@@ -1,32 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.maps.google
-{
- public class Marker
- {
- public function Marker()
- {
- position = new LatLng();
- }
-
- public var position:LatLng;
- public var title:String;
- public var map:Map;
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Place.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Place.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Place.as
deleted file mode 100644
index cb08703..0000000
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/Place.as
+++ /dev/null
@@ -1,43 +0,0 @@
-////////////////////////////////////////////////////////////////////////////////
-//
-// Licensed to the Apache Software Foundation (ASF) under one or more
-// contributor license agreements. See the NOTICE file distributed with
-// this work for additional information regarding copyright ownership.
-// The ASF licenses this file to You under the Apache License, Version 2.0
-// (the "License"); you may not use this file except in compliance with
-// the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-////////////////////////////////////////////////////////////////////////////////
-package org.apache.flex.maps.google
-{
- public class Place
- {
- public function Place()
- {
- geometry = new Geometry();
- }
-
- public var geometry:Geometry;
- public var icon:String;
- public var id:String;
- public var name:String;
- public var reference:String;
- public var vicinity:String;
-
- public function toString():String
- {
- var results:String = "";
- if (name) results = name;
- if (vicinity) results += " "+vicinity;
- return results;
- }
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/GoogleMapView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/GoogleMapView.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/GoogleMapView.as
new file mode 100644
index 0000000..61c31e3
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/GoogleMapView.as
@@ -0,0 +1,435 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.maps.google.beads
+{
+ COMPILE::AS3 {
+ import flash.events.Event;
+ import flash.html.HTMLLoader;
+ import flash.net.URLRequest;
+ }
+
+ import org.apache.flex.core.BeadViewBase;
+ import org.apache.flex.core.IBeadModel;
+ import org.apache.flex.core.IBeadView;
+ import org.apache.flex.core.IStrand;
+ import org.apache.flex.core.UIBase;
+ import org.apache.flex.events.Event;
+ import org.apache.flex.events.IEventDispatcher;
+ import org.apache.flex.maps.google.GoogleMap;
+ import org.apache.flex.maps.google.models.MapModel;
+
+ COMPILE::JS {
+ import goog.bind;
+ import google.maps.event;
+ import google.maps.Geocoder;
+ import google.maps.GeocoderResult;
+ import google.maps.GeocoderStatus;
+ import google.maps.LatLng;
+ import google.maps.Map;
+ import google.maps.Marker;
+ import google.maps.places.PlaceResult;
+ import google.maps.places.PlacesService;
+ import google.maps.places.PlacesServiceStatus;
+ }
+
+ /**
+ * The MapView bead class displays a Google Map using HTMLLoader.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ COMPILE::JS
+ public class GoogleMapView extends BeadViewBase implements IBeadView
+ {
+ public function GoogleMapView()
+ {
+ super();
+ }
+
+ private var map:Map;
+ private var geocoder:Geocoder;
+ private var initialized:Boolean = false;
+ private var markers:Array;
+ private var searchResults:Array;
+ private var service:PlacesService;
+
+ private var _strand:IStrand;
+
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ _strand = value;
+
+ var token:String = (_strand as GoogleMap).token;
+ var src:String = 'https://maps.googleapis.com/maps/api/js?v=3.exp';
+ if (token)
+ src += '&key=' + token;
+ src += '&libraries=places&sensor=false&callback=mapInit';
+
+ var script:HTMLScriptElement = document.createElement('script') as HTMLScriptElement;
+ script.type = 'text/javascript';
+ script.src = src;
+
+ window['mapView'] = this;
+ window['mapInit'] = function():void {
+ (this['mapView'] as GoogleMapView).finishInitialization();
+ }
+
+ document.head.appendChild(script);
+
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.addEventListener("zoomChanged", handleModelChange);
+ }
+
+ public function mapit( centerLat:Number, centerLng:Number, zoom:Number ):void
+ {
+ if (!initialized) {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.currentCenter = new LatLng(centerLat, centerLng);
+ model.zoom = zoom;
+ var mapOptions:Object = new Object();
+ mapOptions['center'] = model.currentCenter;
+ mapOptions['zoom'] = zoom;
+
+ map = new Map((_strand as UIBase).element, mapOptions);
+ geocoder = null;
+
+ google.maps.event.addListener(map, 'center_changed', goog.bind(centerChangeHandler, this));
+ google.maps.event.addListener(map, 'bounds_changed', goog.bind(boundsChangeHandler, this));
+ google.maps.event.addListener(map, 'zoom_changed', goog.bind(zoomChangeHandler, this));
+ }
+ }
+
+ private function finishInitialization():void
+ {
+ mapit(37.333, -121.900, 12);
+ initialized = true;
+ dispatchEvent(new Event('ready'));
+ }
+
+ public function centerOnAddress(value:String):void
+ {
+ if (geocoder == null) geocoder = new Geocoder();
+ geocoder.geocode({address:value}, positionHandler);
+ }
+
+ public function setCenter(location:LatLng):void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.currentCenter = new LatLng(location.lat(), location.lng());
+ map.setCenter(model.currentCenter as LatLng);
+ }
+
+ public function markCurrentLocation():void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ createMarker(model.currentCenter as LatLng);
+ }
+
+ public function markAddress(address:String):void
+ {
+ if (initialized) {
+ if (geocoder == null) geocoder = new Geocoder();
+ geocoder.geocode({address:address}, geocodeHandler);
+ }
+ }
+
+ public function createMarker(location:LatLng):Marker
+ {
+ var marker:Marker = new Marker({map:map, position:location});
+ google.maps.event.addListener(marker, 'click', goog.bind(markerClicked, this));
+ return marker;
+ }
+
+ public function nearbySearch(placeName:String):void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+
+ if (markers == null) markers = [];
+ service = new PlacesService(map);
+ service.nearbySearch({location:model.currentCenter, radius:5000, name:placeName}, searchResultsHandler);
+ }
+
+ public function clearSearchResults():void
+ {
+ if (markers) {
+ for(var i:int=0; i < markers.length; i++) {
+ var m:Marker = markers[i] as Marker;
+ m.setMap(null);
+ }
+ markers = null;
+ }
+ }
+
+ // Callbacks
+
+ public function centerChangeHandler() : void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.currentCenter = map.getCenter();
+
+ var newEvent:Event = new Event('centered');
+ (_strand as IEventDispatcher).dispatchEvent(newEvent);
+ }
+
+ public function boundsChangeHandler():void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.currentCenter = map.getCenter();
+
+ var newEvent:Event = new Event('boundsChanged');
+ (_strand as IEventDispatcher).dispatchEvent(newEvent);
+ }
+
+ public function zoomChangeHandler():void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.currentCenter = map.getCenter();
+
+ var newEvent:Event = new Event('zoomChanged');
+ (_strand as IEventDispatcher).dispatchEvent(newEvent);
+ }
+
+ public function positionHandler(results, status):void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ if (status == GeocoderStatus.OK) {
+ model.currentCenter = results[0].geometry.location;
+ map.setCenter(model.currentCenter as LatLng);
+
+ // dispatch an event to indicate the map has been centered
+ }
+ }
+
+ public function geocodeHandler(results, status):void
+ {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ if (status == GeocoderStatus.OK) {
+ model.currentCenter = results[0].geometry.location;
+ map.setCenter(model.currentCenter as LatLng);
+
+ var marker:Marker = new Marker({map:map, position:model.currentCenter});
+ }
+ }
+
+ public function searchResultsHandler(results, status):void
+ {
+ searchResults = [];
+ if (status == PlacesServiceStatus.OK) {
+ for(var i:int=0; i < results.length; i++) {
+ var place:PlaceResult = new PlaceResult();
+ place.geometry.location = new LatLng(results[i].geometry.location.lat(), results[i].geometry.location.lng());
+ place.icon = results[i].icon;
+ place.id = results[i].id;
+ place.name = results[i].name;
+ place.reference = results[i].reference;
+ place.vicinity = results[i].vicinity;
+ searchResults.push(place);
+
+ var marker:Marker = createMarker(place.geometry.location);
+ marker.setTitle(place.name);
+
+ markers.push(marker);
+ }
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.searchResults = searchResults;
+ }
+ }
+
+ // Event handlers
+
+ /**
+ * Handles changes to properties of the MapModel. When this value is
+ * changed, the map itself has its zoom changed. This will trigger an
+ * event on the map that will be handled by functions above.
+ */
+ public function handleModelChange(event:Event):void
+ {
+ if (event.type == "zoomChanged") {
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ map.setZoom(model.zoom);
+ }
+ }
+
+ public function markerClicked(marker:Marker, event:Object):void
+ {
+ var newMarker:Marker = new Marker();
+ newMarker.setPosition(new LatLng(marker.getPosition().lat(), marker.getPosition().lng()));
+ newMarker.setTitle(marker.getTitle());
+ newMarker.setMap(map);
+
+ var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
+ model.selectedMarker = newMarker;
+
+ var newEvent:Event = new Event('markerClicked');
+ dispatchEvent(newEvent);
+ }
+
+ } // end ::JS
+
+ /**
+ * The AS3 version of GoogleMapView is geared toward its use with HTMLLoader
+ * for AIR.
+ */
+ COMPILE::AS3
+ public class GoogleMapView extends BeadViewBase implements IBeadView
+ {
+ /**
+ * Constructor.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function GoogleMapView()
+ {
+ super();
+ }
+
+ private var _loader:HTMLLoader;
+
+ /**
+ * @copy org.apache.flex.core.IBead#strand
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ }
+
+ /**
+ * Adjusts the map to the given coordinate and zoom level.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function mapit(lat:Number, lng:Number, zoomLevel:Number):void
+ {
+
+ }
+
+ /**
+ * Finds the given address and places a marker on it. This function may be dropped
+ * since centerOnAddress + markCurrentLocation does the same thing.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function markAddress(address:String):void
+ {
+
+ }
+
+ /**
+ * Centers the map on the address given.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function centerOnAddress(address:String):void
+ {
+
+ }
+
+ /**
+ * Marks the current center of the map.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function markCurrentLocation():void
+ {
+
+ }
+
+ /**
+ * Performs a search near the center of map. The result is a set of
+ * markers displayed on the map.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function nearbySearch(placeName:String):void
+ {
+
+ }
+
+ /**
+ * Removes all of the markers from the map
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function removeAllMarkers():void
+ {
+
+ }
+
+ /**
+ * Sets the zoom factor of the map.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function setZoom(zoom:Number):void
+ {
+
+ }
+
+ /**
+ * Sets the center of the map.
+ *
+ * @langversion 3.0
+ * @playerversion Flash 10.2
+ * @playerversion AIR 2.6
+ * @productversion FlexJS 0.0
+ */
+ public function setCenter( location:Object ):void
+ {
+
+ }
+
+ public function clearSearchResults():void
+ {
+ // not implemented
+ }
+ }
+
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/MapView.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/MapView.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/MapView.as
index 5e71187..5cf153f 100644
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/MapView.as
+++ b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/beads/MapView.as
@@ -16,12 +16,22 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
+
+/**
+ * NOTE
+ *
+ * THIS IS THE OLD MapView. The new one is GoogleMapView. This code exists to preserve
+ * the AS/HTMLLoader version for use with AIR. Someday we will come back to this and make
+ * it work again.
+ */
package org.apache.flex.maps.google.beads
{
- import flash.events.Event;
- import flash.html.HTMLLoader;
- import flash.net.URLRequest;
-
+ COMPILE::AS3 {
+ import flash.events.Event;
+ import flash.html.HTMLLoader;
+ import flash.net.URLRequest;
+ }
+
import org.apache.flex.core.BeadViewBase;
import org.apache.flex.core.IBeadModel;
import org.apache.flex.core.IBeadView;
@@ -29,20 +39,52 @@ package org.apache.flex.maps.google.beads
import org.apache.flex.core.UIBase;
import org.apache.flex.events.Event;
import org.apache.flex.events.IEventDispatcher;
- import org.apache.flex.maps.google.LatLng;
- import org.apache.flex.maps.google.Map;
- import org.apache.flex.maps.google.Marker;
- import org.apache.flex.maps.google.Place;
+ import org.apache.flex.maps.google.GoogleMap;
import org.apache.flex.maps.google.models.MapModel;
-
+
/**
* The MapView bead class displays a Google Map using HTMLLoader.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
* @productversion FlexJS 0.0
*/
+ COMPILE::JS
+ public class MapView extends BeadViewBase implements IBeadView
+ {
+ public function MapView()
+ {
+ super();
+ }
+
+ private var _strand:IStrand;
+
+ override public function set strand(value:IStrand):void
+ {
+ super.strand = value;
+ _strand = value;
+
+ var token:String = (_strand as GoogleMap).token;
+ var src:String = 'https://maps.googleapis.com/maps/api/js?v=3.exp';
+ if (token)
+ src += '&key=' + token;
+ src += '&libraries=places&sensor=false&callback=mapInit';
+
+ var script:HTMLScriptElement = document.createElement('script') as HTMLScriptElement;
+ script.type = 'text/javascript';
+ script.src = src;
+
+/** window.mapView = this;
+ window['mapInit'] = function() {
+ (this.mapView._strand as GoogleMap).finishInitialization();
+ }
+**/
+ document.head.appendChild(script);
+ }
+ }
+
+ COMPILE::AS3
public class MapView extends BeadViewBase implements IBeadView
{
/**
@@ -56,12 +98,12 @@ package org.apache.flex.maps.google.beads
public function MapView()
{
}
-
+
private var _loader:HTMLLoader;
-
+
/**
* @copy org.apache.flex.core.IBead#strand
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -70,52 +112,52 @@ package org.apache.flex.maps.google.beads
override public function set strand(value:IStrand):void
{
super.strand = value;
-
+
_loader = new HTMLLoader();
_loader.x = 0;
_loader.y = 0;
_loader.width = UIBase(value).width;
_loader.height = UIBase(value).height;
-
+
IEventDispatcher(_strand).addEventListener("widthChanged",handleSizeChange);
IEventDispatcher(_strand).addEventListener("heightChanged",handleSizeChange);
-
+
var model:IBeadModel = _strand.getBeadByType(IBeadModel) as IBeadModel;
model.addEventListener("zoomChanged", handleZoomChange);
model.addEventListener("currentLocationChanged", handleCurrentLocationChange);
-
+
(_strand as UIBase).addChild(_loader);
-
+
var token:String = Map(_strand).token;
if (token)
page = pageTemplateStart + "&key=" + token + pageTemplateEnd;
else
page = pageTemplateStart + pageTemplateEnd;
-
+
if (page) {
_loader.loadString(page);
_loader.addEventListener(flash.events.Event.COMPLETE, completeHandler);
}
}
-
+
private function completeHandler(event:flash.events.Event):void
{
trace("htmlLoader complete");
-
+
if (_loader && page) {
_loader.window.map.center_changed = onMapCentered;
_loader.window.map.bounds_changed = onMapBoundsChanged;
_loader.window.map.zoom_changed = onMapZoomChanged;
_loader.window.map.dragend = onMapDragEnd;
-
+
// custom event handlers
_loader.window.addEventListener("searchResults",onSearchResults);
_loader.window.addEventListener("markerClicked",onMarkerClicked);
}
-
+
IEventDispatcher(_strand).dispatchEvent(new org.apache.flex.events.Event("ready"));
}
-
+
private function handleZoomChange(event:org.apache.flex.events.Event):void
{
if (_loader && page) {
@@ -123,7 +165,7 @@ package org.apache.flex.maps.google.beads
setZoom(model.zoom);
}
}
-
+
private function handleCurrentLocationChange(event:org.apache.flex.events.Event):void
{
if (_loader && page) {
@@ -131,12 +173,12 @@ package org.apache.flex.maps.google.beads
setCenter(model.currentLocation.location);
}
}
-
+
private var page:String;
-
+
/**
* Adjusts the map to the given coordinate and zoom level.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -148,11 +190,11 @@ package org.apache.flex.maps.google.beads
_loader.window.mapit(lat,lng,zoomLevel);
}
}
-
+
/**
* Finds the given address and places a marker on it. This function may be dropped
* since centerOnAddress + markCurrentLocation does the same thing.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -164,10 +206,10 @@ package org.apache.flex.maps.google.beads
_loader.window.codeaddress(address);
}
}
-
+
/**
* Centers the map on the address given.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -179,10 +221,10 @@ package org.apache.flex.maps.google.beads
_loader.window.centeronaddress(address);
}
}
-
+
/**
* Marks the current center of the map.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -194,11 +236,11 @@ package org.apache.flex.maps.google.beads
_loader.window.markcurrentlocation();
}
}
-
+
/**
* Performs a search near the center of map. The result is a set of
* markers displayed on the map.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -210,10 +252,10 @@ package org.apache.flex.maps.google.beads
_loader.window.nearbysearch(placeName);
}
}
-
+
/**
* Removes all of the markers from the map
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -225,10 +267,10 @@ package org.apache.flex.maps.google.beads
_loader.window.clearmarkers();
}
}
-
+
/**
* Sets the zoom factor of the map.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -240,10 +282,10 @@ package org.apache.flex.maps.google.beads
_loader.window.map.setZoom(zoom);
}
}
-
+
/**
* Sets the center of the map.
- *
+ *
* @langversion 3.0
* @playerversion Flash 10.2
* @playerversion AIR 2.6
@@ -255,7 +297,7 @@ package org.apache.flex.maps.google.beads
_loader.window.setCenter(location.lat, location.lng);
}
}
-
+
/**
* @private
*/
@@ -264,7 +306,7 @@ package org.apache.flex.maps.google.beads
_loader.width = UIBase(_strand).width;
_loader.height = UIBase(_strand).height;
}
-
+
/**
* @private
*/
@@ -272,7 +314,7 @@ package org.apache.flex.maps.google.beads
{
IEventDispatcher(_strand).dispatchEvent( new org.apache.flex.events.Event("centered") );
}
-
+
/**
* @private
*/
@@ -280,7 +322,7 @@ package org.apache.flex.maps.google.beads
{
IEventDispatcher(_strand).dispatchEvent( new org.apache.flex.events.Event("boundsChanged") );
}
-
+
/**
* @private
*/
@@ -288,7 +330,7 @@ package org.apache.flex.maps.google.beads
{
IEventDispatcher(_strand).dispatchEvent( new org.apache.flex.events.Event("zoomChanged") );
}
-
+
/**
* @private
*/
@@ -296,7 +338,7 @@ package org.apache.flex.maps.google.beads
{
IEventDispatcher(_strand).dispatchEvent( new org.apache.flex.events.Event("dragEnd") );
}
-
+
/**
* @private
*/
@@ -314,11 +356,11 @@ package org.apache.flex.maps.google.beads
result.vicinity = event.results[i].vicinity;
results.push(result);
}
-
+
var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
model.searchResults = results;
}
-
+
/**
* @private
*/
@@ -329,13 +371,13 @@ package org.apache.flex.maps.google.beads
marker.position.lng = event.marker.position.lng();
marker.title = event.marker.title;
marker.map = Map(_strand);
-
+
var model:MapModel = _strand.getBeadByType(IBeadModel) as MapModel;
model.selectedMarker = marker;
-
+
IEventDispatcher(_strand).dispatchEvent(new org.apache.flex.events.Event("markerClicked"));
}
-
+
/**
* @private
* This page definition is used with HTMLLoader to bring in the Google Maps
@@ -352,7 +394,7 @@ package org.apache.flex.maps.google.beads
' </style>'+
' <script type="text/javascript"'+
' src="https://maps.googleapis.com/maps/api/js?v=3.exp';
-
+
private static var pageTemplateEnd:String = '&libraries=places&sensor=false">'+
' </script>'+
' <script type="text/javascript">'+
@@ -469,5 +511,5 @@ package org.apache.flex.maps.google.beads
' </body>'+
'</html>';
}
-
-}
\ No newline at end of file
+
+}
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/models/MapModel.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/models/MapModel.as b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/models/MapModel.as
index 08ac171..d988e3b 100644
--- a/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/models/MapModel.as
+++ b/frameworks/projects/GoogleMaps/as/src/org/apache/flex/maps/google/models/MapModel.as
@@ -22,8 +22,11 @@ package org.apache.flex.maps.google.models
import org.apache.flex.core.IStrand;
import org.apache.flex.events.Event;
import org.apache.flex.events.EventDispatcher;
- import org.apache.flex.maps.google.Geometry;
- import org.apache.flex.maps.google.Marker;
+
+ COMPILE::JS {
+ import google.maps.LatLng;
+ import google.maps.Marker;
+ }
/**
* The data model for the Map class, this holds the maps current center
@@ -65,7 +68,20 @@ package org.apache.flex.maps.google.models
_strand = value;
}
- private var _currentLocation:Geometry;
+ private var _token:String;
+
+ public function get token():String
+ {
+ return _token;
+ }
+ public function set token(value:String):void
+ {
+ _token = value;
+ dispatchEvent(new Event("tokenChanged"));
+ }
+
+ COMPILE::JS
+ private var _currentCenter:LatLng;
/**
* The current center of the map.
@@ -75,16 +91,20 @@ package org.apache.flex.maps.google.models
* @playerversion AIR 2.6
* @productversion FlexJS 0.0
*/
- public function get currentLocation():Geometry
+ COMPILE::JS
+ public function get currentCenter():LatLng
{
- return _currentLocation;
+ return _currentCenter;
}
- public function set currentLocation(value:Geometry):void
+
+ COMPILE::JS
+ public function set currentCenter(value:LatLng):void
{
- _currentLocation = value;
- dispatchEvent( new Event("currentLocationChanged") );
+ _currentCenter = value;
+ dispatchEvent( new Event("currentCenterChanged") );
}
+ COMPILE::JS
private var _selectedMarker:Marker;
/**
@@ -95,10 +115,13 @@ package org.apache.flex.maps.google.models
* @playerversion AIR 2.6
* @productversion FlexJS 0.0
*/
+ COMPILE::JS
public function get selectedMarker():Marker
{
return _selectedMarker;
}
+
+ COMPILE::JS
public function set selectedMarker(value:Marker):void
{
_selectedMarker = value;
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/build.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/build.xml b/frameworks/projects/GoogleMaps/build.xml
index 00fbee9..606e30c 100644
--- a/frameworks/projects/GoogleMaps/build.xml
+++ b/frameworks/projects/GoogleMaps/build.xml
@@ -28,28 +28,16 @@
<property name="FLEX_HOME" value="${FLEXJS_HOME}"/>
<property name="FALCON_HOME" value="${env.FALCON_HOME}"/>
<property name="FALCONJX_HOME" value="${env.FALCONJX_HOME}"/>
- <property name="gjslint" value="gjslint" />
- <property name="jshint" value="jshint" />
- <condition property="no.lint" value="true">
- <os family="windows"/>
- </condition>
-
+
<target name="main" depends="clean,compile,test" description="Clean build of GoogleMaps.swc">
</target>
-
- <target name="all" depends="main,compile-asjs,lint-js,test-js" description="Full build of GoogleMaps.swc">
+
+ <target name="all" depends="clean,compile-asjs,compile-extern-swc,copy-js,compile,test" description="Full build of GoogleMaps.swc">
</target>
-
+
<target name="test" unless="is.jenkins">
<!-- no tests yet
<ant dir="as/tests" />
- <ant dir="asjs/tests" />
- -->
- </target>
-
- <target name="test-js" unless="is.jenkins">
- <!-- no tests yet
- <ant dir="js/tests" />
-->
</target>
@@ -74,6 +62,8 @@
<echo message="Compiling libs/GoogleMaps.swc"/>
<echo message="FLEX_HOME: ${FLEX_HOME}"/>
<echo message="FALCON_HOME: ${FALCON_HOME}"/>
+ <!-- make JS output folder now so include-file doesn't error -->
+ <mkdir dir="${basedir}/js/out" />
<!-- Load the <compc> task. We can't do this at the <project> level -->
<!-- because targets that run before flexTasks.jar gets built would fail. -->
@@ -96,46 +86,80 @@
<load-config filename="compile-config.xml" />
<arg value="+playerglobal.version=${playerglobal.version}" />
<arg value="+env.AIR_HOME=${env.AIR_HOME}" />
+ <arg value="-external-library-path+=${FALCONJX_HOME}/../externs/google_maps/out/bin/google_maps.swc" />
+ <arg value="-define=COMPILE::AS3,true" />
+ <arg value="-define=COMPILE::JS,false" />
</compc>
</target>
- <target name="compile-asjs" >
- <!-- nothing to cross-compile yet -->
+ <target name="compile-asjs">
+ <echo message="Cross-compiling GoogleMaps"/>
+ <echo message="FALCONJX_HOME: ${FALCONJX_HOME}"/>
+ <java jar="${FALCONJX_HOME}/lib/compc.jar" fork="true" >
+ <jvmarg value="-Xmx384m" />
+ <jvmarg value="-Dsun.io.useCanonCaches=false" />
+ <jvmarg value="-Dflexcompiler=${FALCONJX_HOME}/../compiler" />
+ <jvmarg value="-Dflexlib=${FLEXJS_HOME}/frameworks" />
+ <arg value="+flexlib=${FLEX_HOME}/frameworks" />
+ <arg value="-js-output-type=FLEXJS" />
+ <arg value="-keep-asdoc" /><!-- allows compiler to see @flexjsignorecoercion annotations -->
+ <arg value="-output=${basedir}/js/out" />
+ <arg value="-load-config=${basedir}/compile-asjs-config.xml" />
+ <arg value="+playerglobal.version=${playerglobal.version}" />
+ <arg value="+env.PLAYERGLOBAL_HOME=${env.PLAYERGLOBAL_HOME}" />
+ <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
+ <arg value="-external-library-path+=${FALCONJX_HOME}/../externs/js/out/bin/js.swc" />
+ <arg value="-external-library-path+=${FALCONJX_HOME}/../externs/google_maps/out/bin/google_maps.swc" />
+ <!-- this is not on external-library path otherwise goog.requires are not generated -->
+ <arg value="-library-path+=${FALCONJX_HOME}/../externs/GCL/out/bin/GCL.swc" />
+ <arg value="-define=COMPILE::AS3,false" />
+ <arg value="-define=COMPILE::JS,true" />
+ </java>
+ </target>
+
+ <target name="compile-extern-swc" description="Compiles .as files into .swc used for cross-compiling other projects">
+ <echo message="Compiling externs/GoogleMaps.swc"/>
+ <echo message="FLEX_HOME: ${FLEX_HOME}"/>
+ <echo message="FALCON_HOME: ${FALCON_HOME}"/>
+ <!-- make JS output folder now so include-file doesn't error -->
+ <mkdir dir="${FLEXJS_HOME}/frameworks/externs"/>
+
+ <!-- Load the <compc> task. We can't do this at the <project> level -->
+ <!-- because targets that run before flexTasks.jar gets built would fail. -->
+ <taskdef resource="flexTasks.tasks" classpathref="lib.path"/>
+ <!--
+ Link in the classes (and their dependencies) for the MXML tags
+ listed in this project's manifest.xml.
+ Also link the additional classes (and their dependencies)
+ listed in CoreClasses.as,
+ because these aren't referenced by the manifest classes.
+ Keep the standard metadata when compiling.
+ Include the appropriate CSS files and assets in the SWC.
+ Don't include any resources in the SWC.
+ Write a bundle list of referenced resource bundles
+ into the file bundles.properties in this directory.
+ -->
+ <compc fork="true"
+ output="${FLEXJS_HOME}/frameworks/externs/GoogleMaps.swc">
+ <jvmarg line="${compc.jvm.args}"/>
+ <load-config filename="compile-asjs-config.xml" />
+ <arg value="+playerglobal.version=${playerglobal.version}" />
+ <arg value="+env.AIR_HOME=${env.AIR_HOME}" />
+ <arg value="-external-library-path+=${FALCONJX_HOME}/../externs/js/out/bin/js.swc" />
+ <arg value="-external-library-path+=${FALCONJX_HOME}/../externs/google_maps/out/bin/google_maps.swc" />
+ <!-- this is not on external-library path otherwise goog.requires are not generated -->
+ <arg value="-library-path+=${FALCONJX_HOME}/../externs/GCL/out/bin/GCL.swc" />
+ <arg value="-define=COMPILE::AS3,false" />
+ <arg value="-define=COMPILE::JS,true" />
+ </compc>
</target>
- <target name="lint-js" depends="gjslint, jshint, copy-js" />
- <target name="copy-js" >
+ <target name="copy-js">
<copy todir="${FLEXJS_HOME}/frameworks/js/FlexJS/libs">
- <fileset dir="${basedir}/js/src">
- <include name="**/**" />
+ <fileset dir="${basedir}/js/out">
+ <include name="**/**"/>
</fileset>
</copy>
</target>
- <target name="gjslint" unless="no.lint">
- <echo>running gjslint</echo>
- <exec executable="${gjslint}" dir="${basedir}" failonerror="true">
- <arg value="--strict" />
- <arg value="--disable" />
- <arg value="006,100,214,300" />
- <!-- 006: wrong indentation -->
- <!-- 100: cannot have non-primitive value -->
- <!-- 214: @fileoverview tag missing description -->
- <!-- 300: missing newline at end of file -->
- <arg value="--max_line_length" />
- <arg value="120" />
- <arg value="-r" />
- <arg value="${basedir}/js/src" />
- </exec>
- </target>
-
- <target name="jshint" unless="no.lint">
- <echo>running jshint</echo>
- <exec executable="${jshint}" dir="${basedir}" failonerror="true">
- <arg value="--config" />
- <arg value="${FLEX_HOME}/frameworks/js/jshint.properties" />
- <arg value="${basedir}/js/src" />
- </exec>
- </target>
-
</project>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/compile-asjs-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/compile-asjs-config.xml b/frameworks/projects/GoogleMaps/compile-asjs-config.xml
new file mode 100644
index 0000000..eba22e4
--- /dev/null
+++ b/frameworks/projects/GoogleMaps/compile-asjs-config.xml
@@ -0,0 +1,70 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<flex-config>
+
+ <compiler>
+ <accessible>false</accessible>
+
+ <external-library-path>
+ <path-element>${env.AIR_HOME}/frameworks/libs/air/airglobal.swc</path-element>
+ </external-library-path>
+
+ <mxml>
+ <children-as-data>true</children-as-data>
+ </mxml>
+ <binding-value-change-event>org.apache.flex.events.ValueChangeEvent</binding-value-change-event>
+ <binding-value-change-event-kind>org.apache.flex.events.ValueChangeEvent</binding-value-change-event-kind>
+ <binding-value-change-event-type>valueChange</binding-value-change-event-type>
+
+ <keep-as3-metadata>
+ <name>Bindable</name>
+ <name>Managed</name>
+ <name>ChangeEvent</name>
+ <name>NonCommittingChangeEvent</name>
+ <name>Transient</name>
+ </keep-as3-metadata>
+
+ <locale/>
+
+ <library-path>
+ <!-- asjscompc won't 'link' these classes in, but will list their requires
+ if these swcs are on the external-library-path then their requires
+ will not be listed -->
+ <path-element>../../externs/Core.swc</path-element>
+ </library-path>
+
+ <source-path>
+ <path-element>as/src</path-element>
+ </source-path>
+
+ <warn-no-constructor>false</warn-no-constructor>
+ </compiler>
+
+ <include-sources>
+ <path-element>as/src</path-element>
+ </include-sources>
+
+ <include-namespaces>
+ <uri>library://ns.apache.org/flexjs/google</uri>
+ </include-namespaces>
+
+ <target-player>${playerglobal.version}</target-player>
+
+
+</flex-config>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/compile-config.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/compile-config.xml b/frameworks/projects/GoogleMaps/compile-config.xml
index 8017798..eb300fe 100644
--- a/frameworks/projects/GoogleMaps/compile-config.xml
+++ b/frameworks/projects/GoogleMaps/compile-config.xml
@@ -24,6 +24,7 @@
<external-library-path>
<path-element>${env.AIR_HOME}/frameworks/libs/air/airglobal.swc</path-element>
<path-element>../../libs/Core.swc</path-element>
+ <path-element>../../externs/GoogleMaps.swc</path-element>
</external-library-path>
<mxml>
http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/5f427485/frameworks/projects/GoogleMaps/google-manifest.xml
----------------------------------------------------------------------
diff --git a/frameworks/projects/GoogleMaps/google-manifest.xml b/frameworks/projects/GoogleMaps/google-manifest.xml
index d32725f..f843c0c 100644
--- a/frameworks/projects/GoogleMaps/google-manifest.xml
+++ b/frameworks/projects/GoogleMaps/google-manifest.xml
@@ -20,5 +20,5 @@
<componentPackage>
- <component id="Map" class="org.apache.flex.maps.google.Map" />
+ <component id="Map" class="org.apache.flex.maps.google.GoogleMap" />
</componentPackage>