[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