codesite-noreply at google.com
2010-May-23 21:58 UTC
[Mapstraction] [mapstraction] r84 committed - Initial bits of Google Earth support....
Revision: 84
Author: dezfowler
Date: Sun May 23 14:57:38 2010
Log: Initial bits of Google Earth support.
Thanks to Pablo L?pez Escob?s @ IDELab
http://github.com/idelab/mxn
http://code.google.com/p/mapstraction/source/detail?r=84
Added:
/trunk/source/mxn.googleearth.core.js
======================================--- /dev/null
+++ /trunk/source/mxn.googleearth.core.js Sun May 23 14:57:38 2010
@@ -0,0 +1,336 @@
+mxn.register(''googleearth'', {
+
+Mapstraction: {
+
+ init: function(element, api) {
+ var me = this;
+
+ this.maps[api] = null;
+
+ google.earth.createInstance(
+ element,
+ function initCallback(object) {
+ me.maps[api] = object;
+ me.maps[api].getWindow().setVisibility(true);
+ initMap();
+ },
+ function failureCallback(object) {
+ throw ''Failed to create Google Earth map'');
+ }
+ );
+
+ },
+
+ applyOptions: function(){
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ resizeTo: function(width, height){
+ // TODO: Add provider code
+ },
+
+ addControls: function( args ) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ addSmallControls: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ addLargeControls: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ addMapTypeControls: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ dragging: function(on) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ setCenterAndZoom: function(point, zoom) {
+ var map = this.maps[this.api];
+ var pt = point.toProprietary(this.api);
+
+ var lookAt = map.getView().copyAsLookAt(map.ALTITUDE_RELATIVE_TO_GROUND);
+
+ // Set new latitude and longitude values
+ lookAt.setLatitude(point.lat);
+ lookAt.setLongitude(point.lon);
+ lookAt.setRange(lookAt.getRange() / 7.0);
+
+ // Update the view in Google Earth
+ map.getView().setAbstractView(lookAt);
+ },
+
+ addMarker: function(marker, old) {
+ var map = this.maps[this.api];
+ var pin = marker.toProprietary(this.api);
+
+ // TODO: Add provider code
+
+ return pin;
+ },
+
+ removeMarker: function(marker) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ removeAllMarkers: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ declutterMarkers: function(opts) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ addPolyline: function(polyline, old) {
+ var map = this.maps[this.api];
+ var pl = polyline.toProprietary(this.api);
+
+ // TODO: Add provider code
+
+ return pl;
+ },
+
+ removePolyline: function(polyline) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ getCenter: function() {
+ var point;
+ var map = this.maps[this.api];
+
+ var lookAt = map.getView().copyAsLookAt(map.ALTITUDE_RELATIVE_TO_GROUND);
+ point = new mxn.LatLonPoint(lookAt.getLatitude(),lookAt.getLongitude());
+ return point;
+ },
+
+ setCenter: function(point, options) {
+ var map = this.maps[this.api];
+ var pt = point.toProprietary(this.api);
+ if(options && options.pan) {
+ // TODO: Add provider code
+ }
+ else {
+ // TODO: Add provider code
+ }
+ },
+
+ setZoom: function(zoom) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+
+ },
+
+ getZoom: function() {
+ var map = this.maps[this.api];
+ var zoom = 5;
+
+ // TODO: Add provider code
+
+ return zoom;
+ },
+
+ getZoomLevelForBoundingBox: function( bbox ) {
+ var map = this.maps[this.api];
+ // NE and SW points from the bounding box.
+ var ne = bbox.getNorthEast();
+ var sw = bbox.getSouthWest();
+ var zoom;
+
+ // TODO: Add provider code
+
+ return zoom;
+ },
+
+ setMapType: function(type) {
+ var map = this.maps[this.api];
+ switch(type) {
+ case mxn.Mapstraction.ROAD:
+ // TODO: Add provider code
+ break;
+ case mxn.Mapstraction.SATELLITE:
+ // TODO: Add provider code
+ break;
+ case mxn.Mapstraction.HYBRID:
+ // TODO: Add provider code
+ break;
+ default:
+ // TODO: Add provider code
+ }
+ },
+
+ getMapType: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+
+ //return mxn.Mapstraction.ROAD;
+ //return mxn.Mapstraction.SATELLITE;
+ //return mxn.Mapstraction.HYBRID;
+
+ },
+
+ getBounds: function () {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+
+ //return new mxn.BoundingBox( , , , );
+ },
+
+ setBounds: function(bounds){
+ var map = this.maps[this.api];
+ var sw = bounds.getSouthWest();
+ var ne = bounds.getNorthEast();
+
+ // TODO: Add provider code
+
+ },
+
+ addImageOverlay: function(id, src, opacity, west, south, east, north,
oContext) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ setImagePosition: function(id, oContext) {
+ var map = this.maps[this.api];
+ var topLeftPoint; var bottomRightPoint;
+
+ // TODO: Add provider code
+
+ //oContext.pixels.top = ...;
+ //oContext.pixels.left = ...;
+ //oContext.pixels.bottom = ...;
+ //oContext.pixels.right = ...;
+ },
+
+ addOverlay: function(url, autoCenterAndZoom) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+
+ },
+
+ addTileLayer: function(tile_url, opacity, copyright_text, min_zoom,
max_zoom) {
+ var map = this.maps[this.api];
+ var me = this;
+
+ google.earth.fetchKml(map, tile_url, function(kmlObject) {
+ if (kmlObject) {
+ map.getFeatures().appendChild(kmlObject);
+ me.tileLayers.push( [tile_url, kmlObject, true] );
+ }
+ else {
+ throw ''Invalid KML file'';
+ }
+ });
+ },
+
+ toggleTileLayer: function(tile_url) {
+ var map = this.maps[this.api];
+
+ for (var f=0; f<this.tileLayers.length; f++) {
+ if(this.tileLayers[f][0] == tile_url) {
+ if(this.tileLayers[f][2]) {
+ map.getFeatures().removeChild(this.tileLayers[f][1]);
+ this.tileLayers[f][2] = false;
+ }
+ else {
+ map.getFeatures().appendChild(this.tileLayers[f][1]);
+ this.tileLayers[f][2] = true;
+ }
+ }
+ }
+ },
+
+ getPixelRatio: function() {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ },
+
+ mousePosition: function(element) {
+ var map = this.maps[this.api];
+
+ // TODO: Add provider code
+ }
+},
+
+LatLonPoint: {
+
+ toProprietary: function() {
+ // TODO: Add provider code
+ },
+
+ fromProprietary: function(googlePoint) {
+ // TODO: Add provider code
+ }
+
+},
+
+Marker: {
+
+ toProprietary: function() {
+ // TODO: Add provider code
+ },
+
+ openBubble: function() {
+ // TODO: Add provider code
+ },
+
+ hide: function() {
+ // TODO: Add provider code
+ },
+
+ show: function() {
+ // TODO: Add provider code
+ },
+
+ update: function() {
+ // TODO: Add provider code
+ }
+
+},
+
+Polyline: {
+
+ toProprietary: function() {
+ // TODO: Add provider code
+ },
+
+ show: function() {
+ // TODO: Add provider code
+ },
+
+ hide: function() {
+ // TODO: Add provider code
+ }
+
+}
+
+});