new layerswitcher, improved google layer, boxes layer, grid fix
git-svn-id: http://svn.openlayers.org/trunk/openlayers@1096 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
+69
-19
@@ -23,7 +23,7 @@ OpenLayers.Map.prototype = {
|
||||
* @type Array */
|
||||
EVENT_TYPES: [
|
||||
"addlayer", "removelayer", "changelayer", "movestart", "move",
|
||||
"moveend", "zoomend", "layerchanged", "popupopen", "popupclose",
|
||||
"moveend", "zoomend", "popupopen", "popupclose",
|
||||
"addmarker", "removemarker", "clearmarkers", "mouseover",
|
||||
"mouseout", "mousemove", "dragstart", "drag", "dragend",
|
||||
"changebaselayer"],
|
||||
@@ -258,7 +258,6 @@ OpenLayers.Map.prototype = {
|
||||
* @param {OpenLayers.Layer} layer
|
||||
*/
|
||||
addLayer: function (layer) {
|
||||
layer.setMap(this);
|
||||
layer.div.style.overflow = "";
|
||||
layer.div.style.zIndex = this.Z_INDEX_BASE['Layer'] + this.layers.length;
|
||||
|
||||
@@ -268,6 +267,7 @@ OpenLayers.Map.prototype = {
|
||||
this.layerContainerDiv.appendChild(layer.div);
|
||||
}
|
||||
this.layers.push(layer);
|
||||
layer.setMap(this);
|
||||
|
||||
this.events.triggerEvent("addlayer");
|
||||
|
||||
@@ -277,15 +277,14 @@ OpenLayers.Map.prototype = {
|
||||
layer.moveTo(bounds, true);
|
||||
}
|
||||
|
||||
// hack hack hack - until we add a more robust layer switcher,
|
||||
// which is able to determine which layers are base layers and
|
||||
// which are not (and put baselayers in a radiobutton group and
|
||||
// other layers in checkboxes) this seems to be the most straight-
|
||||
// forward way of dealing with this.
|
||||
//
|
||||
if ( (this.baseLayer == null) && (layer.isBaseLayer()) ) {
|
||||
this.baseLayer = layer;
|
||||
this.events.triggerEvent("changebaselayer");
|
||||
if (layer.isBaseLayer) {
|
||||
// set the first baselaye we add as the baselayer
|
||||
if (this.baseLayer == null) {
|
||||
this.setBaseLayer(layer);
|
||||
this.events.triggerEvent("changebaselayer");
|
||||
} else {
|
||||
layer.setVisibility(false);
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
@@ -329,19 +328,60 @@ OpenLayers.Map.prototype = {
|
||||
} else {
|
||||
this.layerContainerDiv.removeChild(layer.div);
|
||||
}
|
||||
layer.map = null;
|
||||
this.layers.remove(layer);
|
||||
|
||||
// if we removed the base layer, need to set a new one
|
||||
if (this.baseLayer == layer) {
|
||||
this.baseLayer = null;
|
||||
for(i=0; i < this.layers.length; i++) {
|
||||
if ( (this.baseLayer == null) && (this.layers[i].isBaseLayer()) ) {
|
||||
this.baseLayer = this.layers[i];
|
||||
continue;
|
||||
var iLayer = this.layers[i];
|
||||
if (iLayer.isBaseLayer) {
|
||||
this.setBaseLayer(iLayer);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
layer.map = null;
|
||||
this.events.triggerEvent("removelayer");
|
||||
},
|
||||
|
||||
/** Allows user to specify one of the currently-loaded layers as the Map's
|
||||
* new base layer.
|
||||
*
|
||||
* @param {OpenLayers.Layer} newBaseLayer
|
||||
* @param {Boolean} noEvent
|
||||
*/
|
||||
setBaseLayer: function(newBaseLayer, noEvent) {
|
||||
|
||||
if (newBaseLayer != this.baseLayer) {
|
||||
|
||||
// is newBaseLayer an already loaded layer?
|
||||
var foundLayer = (this.layers.indexOf(newBaseLayer) != -1);
|
||||
|
||||
if (foundLayer) {
|
||||
|
||||
// make the old base layer invisible
|
||||
if (this.baseLayer != null) {
|
||||
this.baseLayer.setVisibility(false, noEvent);
|
||||
}
|
||||
|
||||
// set new baselayer
|
||||
this.baseLayer = newBaseLayer;
|
||||
|
||||
// make the new one visible
|
||||
this.baseLayer.setVisibility(true, noEvent);
|
||||
|
||||
// now go back and reproject
|
||||
for(var i=0; i < this.layers.length; i++) {
|
||||
this.layers[i].reproject();
|
||||
}
|
||||
|
||||
if ((noEvent == null) || (noEvent == false)) {
|
||||
this.events.triggerEvent("changebaselayer");
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* @param {OpenLayers.Control} control
|
||||
@@ -912,8 +952,13 @@ OpenLayers.Map.prototype = {
|
||||
* @type OpenLayers.Pixel
|
||||
*/
|
||||
getViewPortPxFromLayerPx:function(layerPx) {
|
||||
return layerPx.add(parseInt(this.layerContainerDiv.style.left),
|
||||
parseInt(this.layerContainerDiv.style.top) );
|
||||
var viewPortPx = null;
|
||||
if (layerPx != null) {
|
||||
var dX = parseInt(this.layerContainerDiv.style.left);
|
||||
var dY = parseInt(this.layerContainerDiv.style.top);
|
||||
viewPortPx = layerPx.add(dX, dY);
|
||||
}
|
||||
return viewPortPx;
|
||||
},
|
||||
|
||||
/**
|
||||
@@ -925,8 +970,13 @@ OpenLayers.Map.prototype = {
|
||||
* @type OpenLayers.Pixel
|
||||
*/
|
||||
getLayerPxFromViewPortPx:function(viewPortPx) {
|
||||
return viewPortPx.add(-parseInt(this.layerContainerDiv.style.left),
|
||||
-parseInt(this.layerContainerDiv.style.top));
|
||||
var layerPx = null;
|
||||
if (viewPortPx != null) {
|
||||
var dX = -parseInt(this.layerContainerDiv.style.left);
|
||||
var dY = -parseInt(this.layerContainerDiv.style.top);
|
||||
layerPx = viewPortPx.add(dX, dY);
|
||||
}
|
||||
return layerPx;
|
||||
},
|
||||
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user