[OpenLayers-Trac] [OpenLayers] #2934: Openlayers map breaks when a Markers layer is added before a GoogleV3 layer

OpenLayers trac-20090302 at openlayers.org
Thu Nov 18 03:36:37 EST 2010


#2934: Openlayers map breaks when a Markers layer is added before a GoogleV3 layer
------------------------+---------------------------------------------------
 Reporter:  fbuchinger  |       Owner:              
     Type:  feature     |      Status:  new         
 Priority:  critical    |   Milestone:  2.11 Release
Component:  general     |     Version:  2.10        
 Keywords:              |       State:              
------------------------+---------------------------------------------------
 I encountered some strange behaviour in my Openlayers app that dynamically
 adds map layers to an Openlayers Map based on some server side
 configuration.

 The server sends a Json Array with layers and their config, which are then
 added sequentially to the map. The problem: if a markers layer is added
 before a GoogleV3 layer, the whole map breaks or shows a completely wrong
 extent (e.g. some part of Turkey instead of Western Germany).

 I could reproduce this bug with the modified GoogleV3 example in FF 3.6:


 {{{
 function init() {
     map.destroy();
     map = new OpenLayers.Map('map', {allOverlays: true});
     map.addControl(new OpenLayers.Control.LayerSwitcher());

     // the SATELLITE layer has all 22 zoom level, so we add it first to
     // become the internal base layer that determines the zoom levels of
 the
     // map.
     var poi = new OpenLayers.Layer.Markers("Mymarker");
     var gsat = new OpenLayers.Layer.Google(
         "Google Satellite",
         {type: google.maps.MapTypeId.SATELLITE, numZoomLevels: 22}
     );
     var gphy = new OpenLayers.Layer.Google(
         "Google Physical",
         {type: google.maps.MapTypeId.TERRAIN, visibility: false}
     );
     var gmap = new OpenLayers.Layer.Google(
         "Google Streets", // the default
         {numZoomLevels: 20, visibility: false}
     );
     var ghyb = new OpenLayers.Layer.Google(
         "Google Hybrid",
         {type: google.maps.MapTypeId.HYBRID, numZoomLevels: 22,
 visibility: false}
     );
     //This add sequence breaks the map
     map.addLayers([poi, gsat, gphy, gmap, ghyb]);
     //This changed add sequence causes no problems:
     // map.addLayers([gsat, gphy, gmap, ghyb, poi]);

     // Google.v3 uses EPSG:900913 as projection, so we have to
     // transform our coordinates
     map.setCenter(new OpenLayers.LonLat(10.2, 48.9).transform(
         new OpenLayers.Projection("EPSG:4326"),
         map.getProjectionObject()
     ), 5);
 }

 init();
 }}}

-- 
Ticket URL: <http://trac.openlayers.org/ticket/2934>
OpenLayers <http://openlayers.org/>
A free AJAX map viewer


More information about the Trac mailing list