[OpenLayers-Users] Bing maps with dynamic resized map bug

Jimmy Aumard jimmy.aumard at gmail.com
Thu Apr 22 04:56:05 EDT 2010


I have try to make an example :

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>OpenLayers</title>
<!--  -->

<script    src='
http://maps.google.com/maps?file=api&amp;v=2&amp;key=AZERAAAAbsmHETfVBBkfYg-JOma8IhRLLSF_UQf1WG5vAu5MHZHm0uNmSxSASAYqpbkiQpo160A-r5z5xWFQtw
'></script>
<script    src="
http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=euzuro-openlayers"></script>
<script    src='http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1
'></script>

<!-- <script src="OpenLayers-2.8/lib/OpenLayers.js"></script>-->
<script src="http://openlayers.org/api/2.9-rc3/OpenLayers.js"></script>

<script type='text/javascript'>
//
var map;

// increase reload attempts
OpenLayers.IMAGE_RELOAD_ATTEMPTS = 3;

/**
 * Initialise la map, les couches, les evenements...
 * @return void
 */
function init() {

    var usrbounds = new OpenLayers.Bounds(-1433917.9163166,
5014554.4359391,2167713.3877521, 6882716.1409359);

    var options = {
        projection : new OpenLayers.Projection("EPSG:900913"),
        displayProjection : new OpenLayers.Projection("EPSG:4326"),
        units : "m",
        // restrictedExtent : usrbounds,
        numZoomLevels : 18,
        maxResolution : 156543.0339,
        maxExtent : new OpenLayers.Bounds(-20037508, -20037508, 20037508,
                20037508.34),
        controls : [ new OpenLayers.Control.Navigation(),
                     new OpenLayers.Control.MousePosition(),
                     new OpenLayers.Control.LayerSwitcher() ]
    };
    map = new OpenLayers.Map('map', options);

    // create Google Mercator layers

        var gmap = new OpenLayers.Layer.Google("google_str", {
            'sphericalMercator' : true
        });
        var gsat = new OpenLayers.Layer.Google("google_sat", {
            type : G_SATELLITE_MAP,
            'sphericalMercator' : true,
            numZoomLevels : 22
        });
        var ghyb = new OpenLayers.Layer.Google("google_hyb", {
            type : G_HYBRID_MAP,
            'sphericalMercator' : true
        });
        map.addLayers( [ gmap, gsat, ghyb ]);

    // create Virtual Earth layers


        var veroad = new OpenLayers.Layer.VirtualEarth("bing_str", {
            'type' : VEMapStyle.Road,
            'sphericalMercator' : true
        });
        var veaer = new OpenLayers.Layer.VirtualEarth("bing_sat", {
            'type' : VEMapStyle.Aerial,
            'sphericalMercator' : true
        });
        var vehyb = new OpenLayers.Layer.VirtualEarth("bing_hyb", {
            'type' : VEMapStyle.Hybrid,
            'sphericalMercator' : true
        });
        map.addLayers( [ veroad, veaer, vehyb ]);

    // create Yahoo layer

        var yahoo = new OpenLayers.Layer.Yahoo("yahoo_str", {
            'sphericalMercator' : true
        });
        var yahoosat = new OpenLayers.Layer.Yahoo("yahoo_sat", {
            'type' : YAHOO_MAP_SAT,
            'sphericalMercator' : true
        });
        var yahoohyb = new OpenLayers.Layer.Yahoo("yahoo_hyb", {
            'type' : YAHOO_MAP_HYB,
            'sphericalMercator' : true
        });
        map.addLayers( [ yahoo, yahoosat, yahoohyb ]);
    // create OSM layer

        var mapnik = new OpenLayers.Layer.OSM("osm");

        var osmarender = new OpenLayers.Layer.OSM("osm_tile",
                "http://tah.openstreetmap.org/Tiles/tile/${z}/${x}/${y}.png
");
        map.addLayers( [ mapnik, osmarender ]);

        //map.setBaseLayer(veaer);

    map.zoomToExtent(usrbounds, true);

}

/**
 * Passer du plein ecrant a une taille fixe
 * @return void
 */
function togglePleinEcran() {
    var height =document.getElementById('carte').style['height'];

    if (height != "600px") {
        document.getElementById('carte').style['width']='1000px';
        document.getElementById('carte').style['height']='600px';

    } else {
        document.getElementById('carte').style['width']='600px';
        document.getElementById('carte').style['height']='400px';

    }
    map.updateSize();

}

</script>

</head>
<body onload="init()" id="api">

<div id="carte" style="width: 800px; height: 600px">
<div id="map" style="width: 100%; height: 100%"></div>

</div>

1 Change the size <br/>
2 Change layer to bing layer.<br/>
3 Changer the size again and go to google map, normally you have bug (if you
doesn't bug test steps again)<br/><br/>

Another bug when you are on google map and switch to bing map the zoom is
not the same<br/>
1 go to google map <br/>
2 go to bing map <br/>
Sometimes the zoom is not the same, make step again if the bug is not
going<br/>

<input class="button" type="button" value="Change size"
onclick="togglePleinEcran();" />

</body>
</html>

Hope that show you the issue.

Cheers.

Jim

2010/4/22 Andreas Hocevar <ahocevar at opengeo.org>

>
> On Apr 22, 2010, at 09:25 , Jimmy Aumard wrote:
>
> > Hello,
> >
> > I have test the 2.9 RC3 version of OpenLayers and I have always the bugs
> if I show a bing map, resize the map and change layer to google map. the
> google map object was not resized.
>
> Please provide a minimal example that shows the issue.
>
> Regards,
> Andreas.
>
>
> >
> > Thanks
> >
> > Jim
> >
> > 2010/4/20 Jimmy Aumard <jimmy.aumard at gmail.com>
> > Yes I use OpenLayers 2.8 because it is the stable version, I have same
> problem with Google map and I resolved this with
> >
> > map.getLayersBy('name','google_str')[0].mapObject.checkResize();
> >
> > I will test the 2.9 version.
> >
> > Thanks.
> >
> > Jim
> >
> > 2010/4/19 Andreas Hocevar <ahocevar at opengeo.org>
> >
> > On Apr 19, 2010, at 17:54 , Jimmy Aumard wrote:
> >
> > > Thanks!!
> > >
> > > I have find another solution :
> > >
> > > map.getLayersBy('name','bing_str')[0].mapObject.Resize(500,500);
> > >
> > > I resize the bing map object for each layer and it's works.
> >
> > Oh, in that case I assume you are still using OpenLayers 2.8? This is
> fixed in 2.9 (see http://trac.openlayers.org/ticket/2285).
> >
> > -Andreas.
> >
> >
> >
> >
> >
> > --
> > Aumard Jimmy
> > Développeur
> >
> > KINAXIA
> > c/o CICA / PacaEst
> > 2229 Route des Crêtes
> > F-06560 Sophia Antipolis
> >
> > Tél.: +33 (0)4 8973 0242
> > Mob.: +33 (0)6 6017 2827
> > Fax : +33 (0)4 8307 6583
> >
> > http://www.kinaxia.fr
>
> --
> Andreas Hocevar
> OpenGeo - http://opengeo.org/
> Expert service straight from the developers.
>
>


-- 
Aumard Jimmy
Développeur

KINAXIA
c/o CICA / PacaEst
2229 Route des Crêtes
F-06560 Sophia Antipolis

Tél.: +33 (0)4 8973 0242
Mob.: +33 (0)6 6017 2827
Fax : +33 (0)4 8307 6583

http://www.kinaxia.fr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20100422/e6feada0/attachment.html


More information about the Users mailing list