codesite-noreply at google.com
2010-May-19 23:34 UTC
[Mapstraction] [mapstraction] r79 committed - These files all now passing JSLint.
Revision: 79 Author: dezfowler Date: Wed May 19 16:33:35 2010 Log: These files all now passing JSLint. http://code.google.com/p/mapstraction/source/detail?r=79 Modified: /trunk/build.xml /trunk/source/mxn.geocommons.core.js /trunk/source/mxn.google.geocoder.js /trunk/source/mxn.microsoft.core.js /trunk/source/mxn.openlayers.core.js /trunk/source/mxn.openspace.core.js /trunk/source/mxn.yahoo.core.js /trunk/tests/index.htm ======================================--- /trunk/build.xml Sun Oct 4 02:16:15 2009 +++ /trunk/build.xml Wed May 19 16:33:35 2010 @@ -26,54 +26,28 @@ <!-- copy our sources in --> <echo>--- COPY SOURCES ---</echo> - <copy todir="${build.dir}" overwrite="true" flatten="true"> - <resources> - <file file="${source}/mxn.js"/> - <file file="${source}/mxn.core.js"/> - <file file="${source}/mxn.(provider).core.js"/> - <file file="${source}/mxn.cloudmade.core.js"/> - <file file="${source}/mxn.google.core.js"/> - <file file="${source}/mxn.googlev3.core.js"/> - <file file="${source}/mxn.microsoft.core.js"/> - <file file="${source}/mxn.openlayers.core.js"/> - <file file="${source}/mxn.yahoo.core.js"/> - </resources> + <copy todir="${build.dir}"> + <fileset dir="${source}"> + <exclude name="*(provider)*"/> + </fileset> </copy> <!-- lint our sources --> <echo>--- LINT ---</echo> - <!-- Hopefully get the whole lot linting eventually - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/*.js"/> - </java> - --> - - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.js"/> - </java> - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.core.js"/> - </java> - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.(provider).core.js"/> - </java> - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.cloudmade.core.js"/> - </java> - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.google.core.js"/> - </java> - <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> - <arg value="tools/jslint/jslint.js"/> - <arg value="${build.dir}/mxn.googlev3.core.js"/> - </java> + <for param="file"> + <path> + <fileset dir="${build.dir}" includes="*.js"/> + </path> + <sequential> + <java jar="tools/rhino/js.jar" fork="true" failonerror="true"> + <arg value="tools/jslint/jslint.js"/> + <arg value="@{file}"/> + </java> + </sequential> + </for> + + <!-- document our sources --> <echo>--- DOC ---</echo> ======================================--- /trunk/source/mxn.geocommons.core.js Mon Dec 14 17:04:05 2009 +++ /trunk/source/mxn.geocommons.core.js Wed May 19 16:33:35 2010 @@ -36,7 +36,8 @@ F1.Maker.finder_host = f1_finder_host; F1.Maker.maker_host = f1_maker_host; - new F1.Maker.Map({ + // we don''t use this object but assign it to dummy for JSLint + var dummy = new F1.Maker.Map({ dom_id: this.element.id, flashvars: {}, onload: function(map){ @@ -159,15 +160,18 @@ getMapType: function() { var map = this.maps[this.api]; - switch(map.getMapProvider) { - case "OpenStreetMap (Road)": - break; - } - // TODO: Add provider code - - //return mxn.Mapstraction.ROAD; - //return mxn.Mapstraction.SATELLITE; - //return mxn.Mapstraction.HYBRID; + + // TODO: I don''t thick this is correct -Derek + switch(map.getMapProvider()) { + case "OpenStreetMap (road)": + return mxn.Mapstraction.ROAD; + case "BlueMarble": + return mxn.Mapstraction.SATELLITE; + case "Google Hybrid": + return mxn.Mapstraction.HYBRID; + default: + return null; + } }, @@ -201,8 +205,8 @@ return; } // Try if we''ve been given either a string of the ID or a URL - match = url.match(/^(\d+)$/) - if(match != null){ + match = url.match(/^(\d+)$/); + if(match !== null){ match = url.match(/^.*?maps\/(\d+)(\?\(\[?(.*?)\]?\))?$/); } ======================================--- /trunk/source/mxn.google.geocoder.js Mon Dec 14 17:04:05 2009 +++ /trunk/source/mxn.google.geocoder.js Wed May 19 16:33:35 2010 @@ -26,8 +26,8 @@ function MapstractionGeocoder(callback, api, error_callback) { this.api = api; this.callback = callback; - this.geocoders = new Object(); - if(error_callback == null) { + this.geocoders = {}; + if(error_callback === null) { this.error_callback = this.geocode_error } else { this.error_callback = error_callback; ======================================--- /trunk/source/mxn.microsoft.core.js Thu Jan 14 13:41:14 2010 +++ /trunk/source/mxn.microsoft.core.js Wed May 19 16:33:35 2010 @@ -32,7 +32,7 @@ me.load.fire(); } else{ - alert(api + '' map script not imported'') + throw api + '' map script not imported''; } }, @@ -56,14 +56,14 @@ map.SetDashboardSize(VEDashboardSize.Normal); } else { - map.SetDashboardSize(VEDashboardSize.Tiny) + map.SetDashboardSize(VEDashboardSize.Tiny); } if (args.zoom == ''large'') { - map.SetDashboardSize(VEDashboardSize.Small) + map.SetDashboardSize(VEDashboardSize.Small); } else if ( args.zoom == ''small'' ) { - map.SetDashboardSize(VEDashboardSize.Tiny) + map.SetDashboardSize(VEDashboardSize.Tiny); } else { map.HideDashboard(); @@ -79,7 +79,7 @@ addLargeControls: function() { var map = this.maps[this.api]; map.SetDashboardSize(VEDashboardSize.Normal); - this.addControlsArgs.pan=true; + this.addControlsArgs.pan = true; this.addControlsArgs.zoom = ''large''; }, @@ -91,10 +91,10 @@ dragging: function(on) { var map = this.maps[this.api]; - if(on){ + if (on) { map.enableDragMap(); } - else{ + else { map.disableDragMap(); } }, @@ -218,10 +218,7 @@ return mxn.Mapstraction.HYBRID; default: return null; - - } - - + } }, getBounds: function () { @@ -281,7 +278,7 @@ mousePosition: function(element) { var locDisp = document.getElementById(element); - if (locDisp != null) { + if (locDisp !== null) { var map = this.maps[this.api]; map.AttachEvent("onmousemove", function(veEvent){ var latlon = map.PixelToLatLong(new VEPixel(veEvent.mapX, veEvent.mapY)); ======================================--- /trunk/source/mxn.openlayers.core.js Thu Jan 14 13:41:14 2010 +++ /trunk/source/mxn.openlayers.core.js Wed May 19 16:33:35 2010 @@ -15,7 +15,7 @@ } ); - this.layers[''osmmapnik''] = new OpenLayers.Layer.TMS( + this.layers.osmmapnik = new OpenLayers.Layer.TMS( ''OSM Mapnik'', [ "http://a.tile.openstreetmap.org/", @@ -46,7 +46,7 @@ } ); - this.layers[''osm''] = new OpenLayers.Layer.TMS( + this.layers.osm = new OpenLayers.Layer.TMS( ''OSM'', [ "http://a.tah.openstreetmap.org/Tiles/tile.php/", @@ -77,8 +77,8 @@ } ); - this.maps[api].addLayer(this.layers[''osmmapnik'']); - this.maps[api].addLayer(this.layers[''osm'']); + this.maps[api].addLayer(this.layers.osmmapnik); + this.maps[api].addLayer(this.layers.osm); this.loaded[api] = true; }, @@ -164,11 +164,11 @@ addMarker: function(marker, old) { var map = this.maps[this.api]; var pin = marker.toProprietary(this.api); - if (!this.layers[''markers'']) { - this.layers[''markers''] = new OpenLayers.Layer.Markers(''markers''); - map.addLayer(this.layers[''markers'']); - } - this.layers[''markers''].addMarker(pin); + if (!this.layers.markers) { + this.layers.markers = new OpenLayers.Layer.Markers(''markers''); + map.addLayer(this.layers.markers); + } + this.layers.markers.addMarker(pin); return pin; }, @@ -176,7 +176,7 @@ removeMarker: function(marker) { var map = this.maps[this.api]; var pin = marker.toProprietary(this.api); - this.layers[''markers''].removeMarker(pin); + this.layers.markers.removeMarker(pin); pin.destroy(); }, @@ -197,26 +197,28 @@ var map = this.maps[this.api]; var pl = polyline.toProprietary(this.api); - if (!this.layers[''polylines'']) { - this.layers[''polylines''] = new OpenLayers.Layer.Vector(''polylines''); - map.addLayer(this.layers[''polylines'']); + if (!this.layers.polylines) { + this.layers.polylines = new OpenLayers.Layer.Vector(''polylines''); + map.addLayer(this.layers.polylines); } polyline.setChild(pl); - this.layers[''polylines''].addFeatures([pl]); + this.layers.polylines.addFeatures([pl]); return pl; }, removePolyline: function(polyline) { var map = this.maps[this.api]; var pl = polyline.toProprietary(this.api); - this.layers[''polylines''].removeFeatures([pl]); + this.layers.polylines.removeFeatures([pl]); }, removeAllPolylines: function() { var olpolylines = []; for(var i = 0, length = this.polylines.length; i < length; i++){ olpolylines.push(this.polylines[i].toProprietary(this.api)); } - if (this.layers[''polylines'']) this.layers[''polylines''].removeFeatures(olpolylines); + if (this.layers.polylines) { + this.layers.polylines.removeFeatures(olpolylines); + } }, getCenter: function() { ======================================--- /trunk/source/mxn.openspace.core.js Wed Mar 24 11:33:58 2010 +++ /trunk/source/mxn.openspace.core.js Wed May 19 16:33:35 2010 @@ -2,459 +2,451 @@ Mapstraction: { - init: function(element, api) { - var me = this; - // create the map with no controls and don''t centre popup info window - this.maps[api] = new OpenSpace.Map(element,{ - controls: [], - centreInfoWindow: false - }); - // note that these three controls are always there and the fact that - // there are three resident controls is used in addControls() - // enable map drag with mouse and keyboard - this.maps[api].addControl(new OpenLayers.Control.Navigation()); - this.maps[api].addControl(new - OpenLayers.Control.KeyboardDefaults()); - // include copyright statement - this.maps[api].addControl(new - OpenSpace.Control.CopyrightCollection()); - - this.maps[api].events.register("click", this.maps[api], - function(evt) { - var point = this.getLonLatFromViewPortPx( evt.xy ); - // convert to LatLonPoint - var llPoint = new mxn.LatLonPoint; - llPoint.fromProprietary(this.api, point); - me.clickHandler( llPoint.lat, llPoint.lon ); - return false; - }); - this.loaded[api] = true; - }, - - applyOptions: function(){ - var map = this.maps[this.api]; - - // TODO: Add provider code - }, - - resizeTo: function(width, height){ - this.currentElement.style.width = width; - this.currentElement.style.height = height; - this.maps[this.api].updateSize(); - }, - - addControls: function( args ) { - var map = this.maps[this.api]; - // remove existing controls but leave the basic navigation, - keyboard and copyright controls in place - // these were added in addAPI and not normally be removed - for (var i = map.controls.length; i>3; i--) { - map.controls[i-1].deactivate(); - map.removeControl(map.controls[i-1]); - } - // pan and zoom controls not available separately - if ( args.zoom == ''large'') { - map.addControl(new OpenSpace.Control.LargeMapControl()); - } - else if ( args.zoom == ''small'' || args.pan ) { - map.addControl(new OpenSpace.Control.SmallMapControl()); - } - if ( args.overview ) { - // this should work but as of OpenSpace 0.7.2 generates an error - // unless done before setCenterAndZoom - var osOverviewControl = new OpenSpace.Control.OverviewMap(); - map.addControl(osOverviewControl); - osOverviewControl.maximizeControl(); - } - if ( args.map_type ) { - // this is all you get with openspace, a control to switch on or - // off the layers and markers - // probably not much use to anybody - map.addControl(new OpenLayers.Control.LayerSwitcher()); - } - }, - - addSmallControls: function() { - var map = this.maps[this.api]; - map.addControl(new OpenSpace.Control.SmallMapControl()); - }, - - addLargeControls: function() { - var map = this.maps[this.api]; - map.addControl(new OpenSpace.Control.LargeMapControl()); - }, - - addMapTypeControls: function() { - 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 oszoom = zoom-6; - if (oszoom<0) { - oszoom = 0; - } - else if (oszoom>10) { - oszoom = 10; - } - map.setCenter(pt, oszoom); - }, - - addMarker: function(marker, old) { - var map = this.maps[this.api]; - var pin = marker.toProprietary(this.api); - - map.addOverlay(pin); - - 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 pt = map.getCenter(); // an OpenSpace.MapPoint, - // UK National Grid - point = new mxn.LatLonPoint(); - point.fromOpenSpace(pt); // convert to LatLonPoint - - return point; - }, - - setCenter: function(point, options) { - var map = this.maps[this.api]; - var pt = point.toProprietary(this.api); - if(options && options.pan) { - map.setCenter(pt.toProprietary(this.api)); - } - else { - map.setCenter(pt.toProprietary(this.api)); - } - }, - - setZoom: function(zoom) { - var map = this.maps[this.api]; - - var oszoom = zoom-6; - if (oszoom<0) { - oszoom = 0; + init: function(element, api) { + var me = this; + // create the map with no controls and don''t centre popup info window + this.maps[api] = new OpenSpace.Map(element,{ + controls: [], + centreInfoWindow: false + }); + // note that these three controls are always there and the fact that + // there are three resident controls is used in addControls() + // enable map drag with mouse and keyboard + this.maps[api].addControl(new OpenLayers.Control.Navigation()); + this.maps[api].addControl(new OpenLayers.Control.KeyboardDefaults()); + // include copyright statement + this.maps[api].addControl(new OpenSpace.Control.CopyrightCollection()); + + this.maps[api].events.register( + "click", + this.maps[api], + function(evt) { + var point = this.getLonLatFromViewPortPx( evt.xy ); + // convert to LatLonPoint + var llPoint = new mxn.LatLonPoint(); + llPoint.fromProprietary(this.api, point); + me.clickHandler( llPoint.lat, llPoint.lon ); + return false; + } + ); + this.loaded[api] = true; + }, + + applyOptions: function(){ + var map = this.maps[this.api]; + + // TODO: Add provider code + }, + + resizeTo: function(width, height){ + this.currentElement.style.width = width; + this.currentElement.style.height = height; + this.maps[this.api].updateSize(); + }, + + addControls: function( args ) { + var map = this.maps[this.api]; + // remove existing controls but leave the basic navigation, keyboard + // and copyright controls in place these were added in addAPI and not + // normally be removed + for (var i = map.controls.length; i>3; i--) { + map.controls[i-1].deactivate(); + map.removeControl(map.controls[i-1]); + } + // pan and zoom controls not available separately + if ( args.zoom == ''large'') { + map.addControl(new OpenSpace.Control.LargeMapControl()); + } + else if ( args.zoom == ''small'' || args.pan ) { + map.addControl(new OpenSpace.Control.SmallMapControl()); + } + if ( args.overview ) { + // this should work but as of OpenSpace 0.7.2 generates an error + // unless done before setCenterAndZoom + var osOverviewControl = new OpenSpace.Control.OverviewMap(); + map.addControl(osOverviewControl); + osOverviewControl.maximizeControl(); + } + if ( args.map_type ) { + // this is all you get with openspace, a control to switch on or + // off the layers and markers + // probably not much use to anybody + map.addControl(new OpenLayers.Control.LayerSwitcher()); + } + }, + + addSmallControls: function() { + var map = this.maps[this.api]; + map.addControl(new OpenSpace.Control.SmallMapControl()); + }, + + addLargeControls: function() { + var map = this.maps[this.api]; + map.addControl(new OpenSpace.Control.LargeMapControl()); + }, + + addMapTypeControls: function() { + 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 oszoom = zoom-6; + if (oszoom<0) { + oszoom = 0; + } + else if (oszoom>10) { + oszoom = 10; + } + map.setCenter(pt, oszoom); + }, + + addMarker: function(marker, old) { + var map = this.maps[this.api]; + var pin = marker.toProprietary(this.api); + + map.addOverlay(pin); + + 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 pt = map.getCenter(); // an OpenSpace.MapPoint, + // UK National Grid + point = new mxn.LatLonPoint(); + point.fromOpenSpace(pt); // convert to LatLonPoint + + return point; + }, + + setCenter: function(point, options) { + var map = this.maps[this.api]; + var pt = point.toProprietary(this.api); + if(options && options.pan) { + map.setCenter(pt.toProprietary(this.api)); + } + else { + map.setCenter(pt.toProprietary(this.api)); + } + }, + + setZoom: function(zoom) { + var map = this.maps[this.api]; + + var oszoom = zoom-6; + if (oszoom<0) { + oszoom = 0; } else if (oszoom>10) { - oszoom = 10; + oszoom = 10; } map.zoomTo(oszoom); - }, - - getZoom: function() { - var map = this.maps[this.api]; - var zoom; - - zoom = map.zoom + 6; // convert to equivalent google zoom - - 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; - - var obounds = new OpenSpace.MapBounds(); - obounds.extend(new - mxn.LatLonPoint(sw.lat,sw.lon).toProprietary(this.api)); - obounds.extend(new - mxn.LatLonPoint(ne.lat,ne.lon).toProprietary(this.api)); - zoom = map.getZoomForExtent(obounds) + 6; // get it and adjust to - // equivalent google zoom - - 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]; - - // array of openspace coords - // left, bottom, right, top - var olbox = map.calculateBounds().toArray(); - var ossw = new OpenSpace.MapPoint( olbox[0], olbox[1] ); - var osne = new OpenSpace.MapPoint( olbox[2], olbox[3] ); - // convert to LatLonPoints - var sw = new mxn.LatLonPoint; - sw.fromOpenSpace(ossw); - var ne = new mxn.LatLonPoint; - ne.fromOpenSpace(osne); - return new mxn.BoundingBox(sw.lat, sw.lon, ne.lat, ne.lon); - }, - - setBounds: function(bounds){ - var map = this.maps[this.api]; - var sw = bounds.getSouthWest(); - var ne = bounds.getNorthEast(); - - var obounds = new OpenSpace.MapBounds(); - obounds.extend(new - mxn.LatLonPoint(sw.lat,sw.lon).toProprietary(this.api)); - obounds.extend(new - mxn.LatLonPoint(ne.lat,ne.lon).toProprietary(this.api)); - map.zoomToExtent(obounds); - - }, - - 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]; - // TODO: Add provider code - }, - - toggleTileLayer: function(tile_url) { - var map = this.maps[this.api]; - // TODO: Add provider code - }, - - getPixelRatio: function() { - var map = this.maps[this.api]; - // TODO: Add provider code - }, - - mousePosition: function(element) { - var map = this.maps[this.api]; - - try { - map.events.register(''mousemove'', map, function (e) { - var lonLat = map.getLonLatFromViewPortPx(e.xy); - var lon = lonLat.lon * (180.0 / 20037508.34); - var lat = lonLat.lat * (180.0 / 20037508.34); - lat - (180/Math.PI)*(2*Math.atan(Math.exp(lat*Math.PI/180))-(Math.PI/2)); - var loc = numFormatFloat(lat,4) + '' / '' + - numFormatFloat(lon,4); - // numFormatFloat(X,4) simply formats floating point ''X'' to - // 4 dec places - locDisp.innerHTML = loc; - }); - locDisp.innerHTML = ''0.0000 / 0.0000''; - } catch (x) { - alert("Error: " + x); - } - - // TODO: Add provider code - } + }, + + getZoom: function() { + var map = this.maps[this.api]; + var zoom; + + zoom = map.zoom + 6; // convert to equivalent google zoom + + 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; + + var obounds = new OpenSpace.MapBounds(); + obounds.extend(new mxn.LatLonPoint(sw.lat,sw.lon).toProprietary(this.api)); + obounds.extend(new mxn.LatLonPoint(ne.lat,ne.lon).toProprietary(this.api)); + zoom = map.getZoomForExtent(obounds) + 6; // get it and adjust to equivalent google zoom + + 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]; + + // array of openspace coords + // left, bottom, right, top + var olbox = map.calculateBounds().toArray(); + var ossw = new OpenSpace.MapPoint( olbox[0], olbox[1] ); + var osne = new OpenSpace.MapPoint( olbox[2], olbox[3] ); + // convert to LatLonPoints + var sw = new mxn.LatLonPoint(); + sw.fromOpenSpace(ossw); + var ne = new mxn.LatLonPoint(); + ne.fromOpenSpace(osne); + return new mxn.BoundingBox(sw.lat, sw.lon, ne.lat, ne.lon); + }, + + setBounds: function(bounds){ + var map = this.maps[this.api]; + var sw = bounds.getSouthWest(); + var ne = bounds.getNorthEast(); + + var obounds = new OpenSpace.MapBounds(); + obounds.extend(new mxn.LatLonPoint(sw.lat,sw.lon).toProprietary(this.api)); + obounds.extend(new mxn.LatLonPoint(ne.lat,ne.lon).toProprietary(this.api)); + map.zoomToExtent(obounds); + }, + + 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]; + // TODO: Add provider code + }, + + toggleTileLayer: function(tile_url) { + var map = this.maps[this.api]; + // TODO: Add provider code + }, + + getPixelRatio: function() { + var map = this.maps[this.api]; + // TODO: Add provider code + }, + + mousePosition: function(element) { + var map = this.maps[this.api]; + + try { + map.events.register(''mousemove'', map, function (e) { + var lonLat = map.getLonLatFromViewPortPx(e.xy); + var lon = lonLat.lon * (180.0 / 20037508.34); + var lat = lonLat.lat * (180.0 / 20037508.34); + lat = (180/Math.PI)*(2*Math.atan(Math.exp(lat*Math.PI/180))-(Math.PI/2)); + var loc = numFormatFloat(lat,4) + '' / '' + numFormatFloat(lon,4); + // numFormatFloat(X,4) simply formats floating point ''X'' to + // 4 dec places + locDisp.innerHTML = loc; + }); + locDisp.innerHTML = ''0.0000 / 0.0000''; + } catch (x) { + alert("Error: " + x); + } + + // TODO: Add provider code + } }, LatLonPoint: { - toProprietary: function() { - var lonlat = new OpenLayers.LonLat(this.lon, this.lat); - // need to convert to UK national grid - var gridProjection = new OpenSpace.GridProjection(); - return gridProjection.getMapPointFromLonLat(lonlat); - // on OpenSpace.MapPoint - - }, - - fromProprietary: function(osPoint) { - var gridProjection = new OpenSpace.GridProjection(); - var olpt = gridProjection.getLonLatFromMapPoint(osPoint); - // an OpenLayers.LonLat - this.lon = olpt.lon; - this.lat = olpt.lat; - } - + toProprietary: function() { + var lonlat = new OpenLayers.LonLat(this.lon, this.lat); + // need to convert to UK national grid + var gridProjection = new OpenSpace.GridProjection(); + return gridProjection.getMapPointFromLonLat(lonlat); + // on OpenSpace.MapPoint + + }, + + fromProprietary: function(osPoint) { + var gridProjection = new OpenSpace.GridProjection(); + var olpt = gridProjection.getLonLatFromMapPoint(osPoint); + // an OpenLayers.LonLat + this.lon = olpt.lon; + this.lat = olpt.lat; + } + }, Marker: { - - toProprietary: function() { - var size, anchor, icon; - if(this.iconSize) { - size = new OpenLayers.Size(this.iconSize[0], - this.iconSize[1]); - } - else { - size = new OpenLayers.Size(20,25); - } - - if(this.iconAnchor) { - anchor = new OpenLayers.Pixel(this.iconAnchor[0], + + toProprietary: function() { + var size, anchor, icon; + if(this.iconSize) { + size = new OpenLayers.Size(this.iconSize[0], + this.iconSize[1]); + } + else { + size = new OpenLayers.Size(20,25); + } + + if(this.iconAnchor) { + anchor = new OpenLayers.Pixel(this.iconAnchor[0], this.iconAnchor[1]); - } - else { - // FIXME: hard-coding the anchor point - anchor = new OpenLayers.Pixel(-(size.w/2), -size.h); - } - - if(this.iconUrl) { - icon = new OpenSpace.Icon(this.iconUrl, size, anchor); - } - else { // leave at default OpenSpace icon - } - - // This requires an OpenLayers specific hack, doesn''t work when - // not including OpenLayers.js - // if (this.labelText) { - // var marker = new - OpenLayers.Marker.Label(this.location.toProprietary(this.api), icon, + } + else { + // FIXME: hard-coding the anchor point + anchor = new OpenLayers.Pixel(-(size.w/2), -size.h); + } + + if(this.iconUrl) { + icon = new OpenSpace.Icon(this.iconUrl, size, anchor); + } + else { // leave at default OpenSpace icon + } + + // This requires an OpenLayers specific hack, doesn''t work when + // not including OpenLayers.js + OpenLayers.Marker.Label(this.location.toProprietary(this.api), icon, this.labelText, {mouseOver:true,tooltipsFormat:true}); - // } - // else { - var marker = new OpenLayers.Marker(this.location.toProprietary(this.api), icon); - // } - return marker; - }, - - openBubble: function() { - // TODO: Add provider code - }, - - hide: function() { - // TODO: Add provider code - }, - - show: function() { - // TODO: Add provider code - }, - - update: function() { - // TODO: Add provider code - } + + var marker = new OpenLayers.Marker(this.location.toProprietary(this.api), icon); + + return marker; + }, + + 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() { - var ospolyline; - var ospoints = []; - for (var i = 0, length = this.points.length ; i< length; i++){ - // convert each point to OpenSpace.MapPoint - var ospoint = this.points[i].toProprietary(this.api); - var olgpoint = new OpenLayers.Geometry.Point(ospoint.getEasting(), - ospoint.getNorthing()); - ospoints.push(olgpoint); - } - if (this.closed) { - ospolyline = new OpenLayers.Feature.Vector(new - OpenLayers.Geometry.LinearRing(ospoints), null, { - - - fillColor: this.color, - strokeColor: this.color, - strokeOpacity: this.opacity, - fillOpacity: this.opacity, - strokeWidth: this.width - }); - } - else { - ospolyline = new OpenLayers.Feature.Vector(new - OpenLayers.Geometry.LineString(ospoints), null, { - fillColor: 0, - strokeColor: this.color, - strokeOpacity: this.opacity, - fillOpacity: 0, - strokeWidth: this.width - }); - } - return ospolyline; - }, - - show: function() { - // TODO: Add provider code - }, - - hide: function() { - // TODO: Add provider code - } - -} - + toProprietary: function() { + var ospolyline; + var ospoints = []; + for (var i = 0, length = this.points.length ; i< length; i++){ + // convert each point to OpenSpace.MapPoint + var ospoint = this.points[i].toProprietary(this.api); + var olgpoint = new OpenLayers.Geometry.Point(ospoint.getEasting(),ospoint.getNorthing()); + ospoints.push(olgpoint); + } + if (this.closed) { + ospolyline = new OpenLayers.Feature.Vector( + new OpenLayers.Geometry.LinearRing(ospoints), + null, + { + fillColor: this.color, + strokeColor: this.color, + strokeOpacity: this.opacity, + fillOpacity: this.opacity, + strokeWidth: this.width + } + ); + } + else { + ospolyline = new OpenLayers.Feature.Vector( + new OpenLayers.Geometry.LineString(ospoints), + null, + { + fillColor: 0, + strokeColor: this.color, + strokeOpacity: this.opacity, + fillOpacity: 0, + strokeWidth: this.width + } + ); + } + return ospolyline; + }, + + show: function() { + // TODO: Add provider code + }, + + hide: function() { + // TODO: Add provider code + } + +} + }); ======================================--- /trunk/source/mxn.yahoo.core.js Mon Dec 14 17:04:05 2009 +++ /trunk/source/mxn.yahoo.core.js Wed May 19 16:33:35 2010 @@ -235,8 +235,8 @@ if(sw_pix.x > ne_pix.x) { sw_pix.x -= (1 << (26 - zoom)); //earth circumference in pixel } - if(Math.abs(ne_pix.x - sw_pix.x) <= container.width - && Math.abs(ne_pix.y - sw_pix.y) <= container.height){ + if(Math.abs(ne_pix.x - sw_pix.x) <= container.width && + Math.abs(ne_pix.y - sw_pix.y) <= container.height){ map.drawZoomAndCenter(center, zoom); //Call drawZoomAndCenter here: OK if called multiple times anyway break; } ======================================--- /trunk/tests/index.htm Mon Dec 14 17:04:05 2009 +++ /trunk/tests/index.htm Wed May 19 16:33:35 2010 @@ -5,11 +5,9 @@ <title>Mapstraction V2 demo</title> <script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAY70wuSo0zF3ZtJVp5bDm1BS1Y2ErAqCHV5rDhHSzgjy23KqwdRRaoSBuZk72oDzzAYxVBjtsLqSmTw"></script> - <script type="text/javascript" src="http://api.maps.yahoo.com/ajaxymap?v=3.8&appid=5wTxDW_V34GQjK.7glLG6OnJSRxCvfLj7ktMsuOoR42Gkm16vDVEjjw6FGWJ1Gky"></script> - <script type="text/javascript" src="http://openlayers.org/api/OpenLayers.js"></script> - - <script src="../source/mxn.js?(google,yahoo,openlayers)" type="text/javascript"></script> + + <script src="../source/mxn.js?(google,yahoo)" type="text/javascript"></script> <!--<script src="domReady.js" type="text/javascript"></script>--> @@ -94,6 +92,12 @@ action: function(){ m.setZoom(8); } + }, + { + desc: ''Change type'', + action: function(){ + m.setMapType(mxn.Mapstraction.SATELLITE); + } }, { desc: ''Add marker'', @@ -162,12 +166,7 @@ m.swap(''map'', ''yahoo''); } }, - { - desc: ''Swap API (openlayers)'', - action: function(){ - m.swap(''map'', ''openlayers''); - } - }, + { desc: ''Done.'', action: function(){} } ];