Hi,
this is a known issue, unfortunately without a good solution at the moment:
http://trac.openlayers.org/ticket/1797
http://trac.openlayers.org/ticket/2055
A workaround is to specify the map div's width and height in pixels.
Regards,
Andreas.
Joanne Cook wrote:
> Hi List,
>
> I have a map that I thought was all correctly set up to use spherical
> mercator, and all my data (which is all projected in 900913) is correctly
> displaying on either open streetmap or google streets data. However, when I
> add a google satellite or hybrid layer, the initial load of the map shows the
> satellite layer displaced several hundred miles to the west. If I switch to
> the google streets layer without any zooming or panning, the displacement
> disappears. If I then switch back to the google satellite layer, again with
> no zooming or panning, it appears in the correct place. Throughout all of
> this, my data layer has no displacement. Furthermore, since all of this is
> set within mapfish, with extjs used for side panels, if I minimise the side
> panel while the displacement is occurring it also removes the displacement.
> I'm using the svn versions of openlayers and mapfish.
>
> This is the code relating to setting up the map and layers:
>
> function createMap() {
> var options = {
> projection: new OpenLayers.Projection("EPSG:900913"),
> displayProjection: new OpenLayers.Projection("EPSG:27700"),
> units: "m",
> maxResolution: 156543.0339,
> maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34,
> 20037508.34, 20037508.34)
> };
> return new OpenLayers.Map('olmap',options);
> } //end createmap
>
> function addlayers(map){
>
>
> // define wms
> layer = new OpenLayers.Layer.WMS("OA Sites WMS",
> "http://geoserver.thehumanjourney.net:80/geoserver/wms?",
> {layers: 'oadigi:oasites', transparent: true,
> format: 'image/png', buffer:0},
> {isBaseLayer: false});
>
>
>
> // create Google Mercator layers
> var gmap = new OpenLayers.Layer.Google(
> "Google Streets",
> {'sphericalMercator': true}
> );
> var gsat = new OpenLayers.Layer.Google(
> "Google Satellite",
> {type: G_SATELLITE_MAP, 'sphericalMercator': true,
> numZoomLevels: 22}
> );
> var ghyb = new OpenLayers.Layer.Google(
> "Google Hybrid",
> {type: G_HYBRID_MAP, 'sphericalMercator': true}
> );
>
>
> // define pseudo-layer for highlighting selected features
> select = new OpenLayers.Layer.Vector("Selection",
> {protocol: new mapfish.Protocol.TriggerEventDecorator(protocol),
> strategies: [new mapfish.Strategy.ProtocolListener({append:
> true})],
> styleMap: new
> OpenLayers.Style(OpenLayers.Feature.Vector.style["select"]),
> displayInLayerSwitcher: false});
>
>
> // add layers
> map.addLayers([layer, select, gmap, gsat, ghyb]);
>
> } //end addlayers
>
> function setMapCenter() {
> //define a new projection object so map can be centred using latlong
> var proj = new OpenLayers.Projection("EPSG:4326");
> var point = new OpenLayers.LonLat(-2.9, 53.6);
> this.setCenter(point.transform(proj, this.getProjectionObject()), 6);
> } //end setMapCenter
>
> I hope that's enough information for someone as it's hard for me to get this
> map accessible to the outside world yet.
>
> Many thanks
>
> Jo
>
>
--
Andreas Hocevar
OpenGeo - http://opengeo.org/
Expert service straight from the developers.
_______________________________________________
Users mailing list
[email protected]
http://openlayers.org/mailman/listinfo/users