Merge changes from trunk to 2.4:

svn merge trunk/openlayers/@3088 trunk/openlayers/@HEAD branches/openlayers/2.4/

Changes include:
 * Improved GML parsing to catch fid better
 * Letting panels pass mouseup through
 * Fixing small bug in panel example
 * Display of markers/layers when out of range on startup.
 * Fix to aspect ratio of Overview Map.


git-svn-id: http://svn.openlayers.org/branches/openlayers/2.4@3112 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
crschmidt
2007-05-02 14:06:41 +00:00
parent b5103eb8ce
commit 3c6cd6f559
13 changed files with 159 additions and 195 deletions

View File

@@ -520,8 +520,8 @@ OpenLayers.Control.OverviewMap.prototype =
this.ovmap.size.w - this.wComp);
this.extentRectangle.style.top = parseInt(top) + 'px';
this.extentRectangle.style.left = parseInt(left) + 'px';
this.extentRectangle.style.height = parseInt(bottom - top)+ 'px';
this.extentRectangle.style.width = parseInt(right - left) + 'px';
this.extentRectangle.style.height = parseInt(Math.max(bottom - top, 0))+ 'px';
this.extentRectangle.style.width = parseInt(Math.max(right - left, 0)) + 'px';
},
/**

View File

@@ -129,6 +129,8 @@ OpenLayers.Control.Panel.prototype =
// Give each control a panel_div which will be used later.
// Access to this div is via the panel_div attribute of the
// control added to the panel.
// Also, stop mousedowns and clicks, but don't stop mouseup,
// since they need to pass through.
for (var i = 0; i < controls.length; i++) {
var element = document.createElement("div");
var textNode = document.createTextNode(" ");
@@ -137,8 +139,6 @@ OpenLayers.Control.Panel.prototype =
this.onClick.bind(this, controls[i]));
OpenLayers.Event.observe(controls[i].panel_div, "mousedown",
OpenLayers.Event.stop.bindAsEventListener());
OpenLayers.Event.observe(controls[i].panel_div, "mouseup",
OpenLayers.Event.stop.bindAsEventListener());
}
if (this.map) { // map.addControl() has already been called on the panel

View File

@@ -84,13 +84,11 @@ OpenLayers.Format.GML.prototype =
var feature = new OpenLayers.Feature.Vector();
if (xmlNode.firstChild.attributes && xmlNode.firstChild.attributes['fid']) {
feature.fid = xmlNode.firstChild.attributes['fid'].nodeValue;
}
// match MultiPolygon
if (OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon").length != 0) {
var multipolygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode, this.gmlns, "gml", "MultiPolygon")[0];
feature.fid = multipolygon.parentNode.parentNode.getAttribute('fid');
geom = new OpenLayers.Geometry.MultiPolygon();
var polygons = OpenLayers.Ajax.getElementsByTagNameNS(multipolygon,
this.gmlns, "gml", "Polygon");
@@ -104,6 +102,7 @@ OpenLayers.Format.GML.prototype =
this.gmlns, "gml", "MultiLineString").length != 0) {
var multilinestring = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
this.gmlns, "gml", "MultiLineString")[0];
feature.fid = multilinestring.parentNode.parentNode.getAttribute('fid');
geom = new OpenLayers.Geometry.MultiLineString();
var lineStrings = OpenLayers.Ajax.getElementsByTagNameNS(multilinestring, this.gmlns, "gml", "LineString");
@@ -122,6 +121,7 @@ OpenLayers.Format.GML.prototype =
this.gmlns, "gml", "MultiPoint").length != 0) {
var multiPoint = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
this.gmlns, "gml", "MultiPoint")[0];
feature.fid = multiPoint.parentNode.parentNode.getAttribute('fid');
geom = new OpenLayers.Geometry.MultiPoint();
@@ -138,6 +138,7 @@ OpenLayers.Format.GML.prototype =
this.gmlns, "gml", "Polygon").length != 0) {
var polygon = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
this.gmlns, "gml", "Polygon")[0];
feature.fid = polygon.parentNode.parentNode.getAttribute('fid');
geom = this.parsePolygonNode(polygon);
}
@@ -146,6 +147,8 @@ OpenLayers.Format.GML.prototype =
this.gmlns, "gml", "LineString").length != 0) {
var lineString = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
this.gmlns, "gml", "LineString")[0];
feature.fid = lineString.parentNode.parentNode.getAttribute('fid');
p = this.parseCoords(lineString);
if (p.points) {
geom = new OpenLayers.Geometry.LineString(p.points);
@@ -157,6 +160,7 @@ OpenLayers.Format.GML.prototype =
this.gmlns, "gml", "Point").length != 0) {
var point = OpenLayers.Ajax.getElementsByTagNameNS(xmlNode,
this.gmlns, "gml", "Point")[0];
feature.fid = point.parentNode.parentNode.getAttribute('fid');
p = this.parseCoords(point);
if (p.points) {

View File

@@ -286,6 +286,8 @@ OpenLayers.Layer.prototype = {
if (!this.isBaseLayer) {
this.inRange = this.calculateInRange();
var show = ((this.visibility) && (this.inRange));
this.div.style.display = show ? "" : "none";
}
// deal with gutters

View File

@@ -21,6 +21,15 @@ OpenLayers.Layer.Markers.prototype =
/** internal marker list
* @type Array(OpenLayers.Marker) */
markers: null,
/** internal state of drawing. This is a workaround for the fact
* that the map does not call moveTo with a zoomChanged when the
* map is first starting up. This lets us catch the case where we
* have *never* drawn the layer, and draw it even if the zoom hasn't
* changed.
* @type Boolean */
drawn: false,
/**
* @constructor
@@ -51,8 +60,9 @@ OpenLayers.Layer.Markers.prototype =
moveTo:function(bounds, zoomChanged, dragging) {
OpenLayers.Layer.prototype.moveTo.apply(this, arguments);
if (zoomChanged) {
if (zoomChanged || !this.drawn) {
this.redraw();
this.drawn = true;
}
},

View File

@@ -248,6 +248,12 @@ OpenLayers.Layer.Vector.prototype =
this.features = OpenLayers.Util.removeItem(this.features, feature);
this.renderer.eraseGeometry(feature.geometry);
//in the case that this feature is one of the selected features,
// remove it from that array as well.
if (OpenLayers.Util.indexOf(this.selectedFeatures, feature) != -1){
OpenLayers.Util.removeItem(this.selectedFeatures, feature);
}
}
},