[OpenLayers-Dev] Projections/Google

justin merz jrmerz at gmail.com
Mon Jul 16 18:21:05 EDT 2007


Brad,

I have an updated version of Proj.js, the last one had some syntax errors
(this one still might, but I have removed all that I could find, code just
needs to be run now), let me know and I can send it over to you.  Also here
is the changes I made to Google.js for the conversions.

-----------------------Google.js-------------------------

    getLongitudeFromMapObjectLonLat: function(moLonLat) {
        if( this.projectionCon ){
            var points = this.projectionCon.Forward( new Array(moLonLat.lng(),
moLonLat.lat()) );
            return points[0];
        }
        return moLonLat.lng();
    },

    getLatitudeFromMapObjectLonLat: function(moLonLat) {
        if( this.projectionCon ){
            var points = this.projectionCon.Forward( new Array(moLonLat.lng(),
moLonLat.lat()) );
            return points[1];
        }
        return moLonLat.lat();
    },

    projectionCon: null,

    getMapObjectLonLatFromLonLat: function(lon, lat) {
        if( this.projectionCon ){
            var points = this.projectionCon.Inverse( new Array(lon, lat) );
            return new GLatLng(points[1], points[0]);
        }
        return new GLatLng(lon, lat);
    },

    /*  There is probably a better way to do this */
    setOLtoMapObjectAPITranslation: function(){
        this.projection = this.map.projection;
        if( this.map['resolutions'] ){
           this.resolutions = this.map['resolutions'];
        }
        this.projectionCon = new OpenLayers.Proj (this.projection);
    },

Finally, here is a function I am working on to fix some of the zoom extent
problems (when switching between layers and for getting the zoom box to
work) .  Still needs more testing.

     getZoomForExtent: function( bounds ){
        var moBounds = null;
        if (bounds != null && this.projectionCon) {
            var point = this.projectionCon.Inverse( new Array(bounds.left,
bounds.bottom ) );
            var sw = new GLatLng(point[1], point[0]);
            point = this.projectionCon.Inverse( new Array(bounds.right,
bounds.top) );
            var ne = new GLatLng(point[1], point[0]);
            moBounds = new GLatLngBounds(sw, ne);
            newZoom = this.mapObject.getBoundsZoomLevel(moBounds);
            if( newZoom != 0 ){
                return newZoom;
            }
            return this.map.zoom;
        }
        return this.map.zoom;
     },

-Justin
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-dev/attachments/20070716/9b95784f/attachment.html


More information about the Dev mailing list