Ticket #2934 (closed bug: invalid)
Openlayers map breaks when a Markers layer is added before a GoogleV3 layer
| Reported by: | fbuchinger | Owned by: | |
|---|---|---|---|
| Priority: | critical | Milestone: | 2.11 Release |
| Component: | general | Version: | 2.10 |
| Keywords: | Cc: | ||
| State: |
Description
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();
Change History
Note: See
TracTickets for help on using
tickets.
