KML data near Africa? Google Maps Projection Problem Repost

1 message Options
Embed this post
Permalink
TiffL

KML data near Africa? Google Maps Projection Problem Repost

Reply Threaded More More options
Print post
Permalink
Hi! Newbie here. In dire need of help! I really appreciate any comments/pointers.

I am not sure why my coordinates, no matter what KML is being served by a webservice ( setDataSource) call, are all plotted near Africa after I put in the options for google projection due to kml data shifting positions after zooming in and out (http://trac.openlayers.org/wiki/SphericalMercator)... :-(

//start here
        function init(){
        var options = {
                projection: new OpenLayers.Projection("EPSG:900913"),
                displayProjection: new OpenLayers.Projection("EPSG:4326"),
                units: "m",
                numZoomLevels: 18,
                          maxResolution: 156543.0339,
                     maxExtent: new OpenLayers.Bounds(-20037508, -20037508,
                                                         20037508, 20037508)
                };

        map = new OpenLayers.Map('map', options);
        var gphy = new OpenLayers.Layer.Google(
               "Google Street",
                {'sphericalMercator':true});

        var bglayer = new OpenLayers.Layer.WMS( "OpenLayers WMS",
                   "http://labs.metacarta.com/wms/vmap0",
           {layers: 'basic', projection: new OpenLayers.Projection("EPSG:4326")});
               
        map.addLayers([gphy, bglayer]);
        map.addControl(new OpenLayers.Control.LayerSwitcher());
             map.zoomToMaxExtent();
             OpenLayers.Console.log("initialized");
        }

             function setDataSource() {
        OpenLayers.Console.log("Setting data source to " + OpenLayers.Util.getElement('loc').value);
                if (layer != undefined) {map.removeLayer(layer)};
                if (selectControl != undefined) {map.removeControl(selectControl)};
       
                // Encode the destination url as a parameter string.
        var params = OpenLayers.Util.getParameterString({url:OpenLayers.Util.getElement('loc').value})
                       
        //  Make the http request to the transformer, with the destination url as a parameter.
        layer = new OpenLayers.Layer.GML("KML", transformerURL + params,
               {
                format: OpenLayers.Format.KML,
                formatOptions: {
                extractStyles: true,
                extractAttributes: true,
                maxDepth: 2,
          //tried the projection below, had no effect
               //projection: new OpenLayers.Projection("EPSG:4326"),
               }
               });
        map.addLayer(layer);
        selectControl = new OpenLayers.Control.SelectFeature(layer,
               {onSelect: onFeatureSelect, onUnselect: onFeatureUnselect});
                        map.addControl(selectControl);
                        selectControl.activate();
        }