Instead of storing the geometry on all nodes (increasing memory drain) we only store what the indexer needs. The bounds bottom is only used in the compare method when checking for z and y ordering. r=ahocevar (closes #2198)
git-svn-id: http://svn.openlayers.org/trunk/openlayers@9590 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
@@ -318,12 +318,9 @@ OpenLayers.ElementsIndexer.IndexingMethods = {
|
|||||||
nextNode
|
nextNode
|
||||||
);
|
);
|
||||||
|
|
||||||
if (nextNode && returnVal == 0) {
|
if (nextNode && returnVal === 0) {
|
||||||
var newLat = newNode._geometry.getBounds().bottom;
|
var result = nextNode._boundsBottom - newNode._boundsBottom;
|
||||||
var nextLat = nextNode._geometry.getBounds().bottom;
|
returnVal = (result === 0) ? 1 : result;
|
||||||
|
|
||||||
var result = nextLat - newLat;
|
|
||||||
returnVal = (result ==0) ? 1 : result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return returnVal;
|
return returnVal;
|
||||||
@@ -560,7 +557,7 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
|||||||
|
|
||||||
// Set the data for the node, then draw it.
|
// Set the data for the node, then draw it.
|
||||||
node._featureId = featureId;
|
node._featureId = featureId;
|
||||||
node._geometry = geometry;
|
node._boundsBottom = geometry.getBounds().bottom;
|
||||||
node._geometryClass = geometry.CLASS_NAME;
|
node._geometryClass = geometry.CLASS_NAME;
|
||||||
node._style = style;
|
node._style = style;
|
||||||
|
|
||||||
@@ -697,7 +694,6 @@ OpenLayers.Renderer.Elements = OpenLayers.Class(OpenLayers.Renderer, {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
node._style = style;
|
|
||||||
node._options = options;
|
node._options = options;
|
||||||
|
|
||||||
//set style
|
//set style
|
||||||
|
|||||||
@@ -155,9 +155,10 @@
|
|||||||
r.getNodeType = function(geometry, style) {
|
r.getNodeType = function(geometry, style) {
|
||||||
return "div";
|
return "div";
|
||||||
};
|
};
|
||||||
geometry = {
|
var geometry = {
|
||||||
id: 'foo',
|
id: 'foo',
|
||||||
CLASS_NAME: 'bar'
|
CLASS_NAME: 'bar',
|
||||||
|
getBounds: function() {return {bottom: 0}}
|
||||||
};
|
};
|
||||||
var style = {'backgroundGraphic': 'foo'};
|
var style = {'backgroundGraphic': 'foo'};
|
||||||
var featureId = 'dude';
|
var featureId = 'dude';
|
||||||
@@ -191,6 +192,10 @@
|
|||||||
|
|
||||||
setUp();
|
setUp();
|
||||||
|
|
||||||
|
var geometry = {
|
||||||
|
getBounds: function() {return {bottom: 0}}
|
||||||
|
}
|
||||||
|
|
||||||
var r = create_renderer();
|
var r = create_renderer();
|
||||||
|
|
||||||
var element = document.createElement("div");
|
var element = document.createElement("div");
|
||||||
@@ -210,9 +215,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {CLASS_NAME: 'OpenLayers.Geometry.Point'};
|
var point = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Point'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(point, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawPoint when passed a point");
|
t.ok(properDraw, "drawGeometry called drawPoint when passed a point");
|
||||||
|
|
||||||
// line string
|
// line string
|
||||||
@@ -221,9 +226,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {id: "foo", CLASS_NAME: 'OpenLayers.Geometry.LineString'};
|
var linestring = OpenLayers.Util.applyDefaults({id: "foo", CLASS_NAME: 'OpenLayers.Geometry.LineString'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(linestring, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawLineString when passed a line string");
|
t.ok(properDraw, "drawGeometry called drawLineString when passed a line string");
|
||||||
|
|
||||||
// linear ring
|
// linear ring
|
||||||
@@ -232,9 +237,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {CLASS_NAME: 'OpenLayers.Geometry.LinearRing'};
|
var linearring = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.LinearRing'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(linearring, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawLinearRing when passed a linear ring");
|
t.ok(properDraw, "drawGeometry called drawLinearRing when passed a linear ring");
|
||||||
|
|
||||||
// polygon
|
// polygon
|
||||||
@@ -243,9 +248,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {CLASS_NAME: 'OpenLayers.Geometry.Polygon'};
|
var polygon = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Polygon'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(polygon, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawPolygon when passed a polygon");
|
t.ok(properDraw, "drawGeometry called drawPolygon when passed a polygon");
|
||||||
|
|
||||||
// surface
|
// surface
|
||||||
@@ -254,9 +259,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
geometry = {CLASS_NAME: 'OpenLayers.Geometry.Surface'};
|
var surface = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Surface'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(surface, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawSurface when passed a surface");
|
t.ok(properDraw, "drawGeometry called drawSurface when passed a surface");
|
||||||
|
|
||||||
// rectangle
|
// rectangle
|
||||||
@@ -265,9 +270,9 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {CLASS_NAME: 'OpenLayers.Geometry.Rectangle'};
|
var rectangle = OpenLayers.Util.applyDefaults({CLASS_NAME: 'OpenLayers.Geometry.Rectangle'}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(rectangle, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawRectangle when passed a rectangle");
|
t.ok(properDraw, "drawGeometry called drawRectangle when passed a rectangle");
|
||||||
|
|
||||||
// multi-point
|
// multi-point
|
||||||
@@ -276,12 +281,12 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {
|
var multipoint = OpenLayers.Util.applyDefaults({
|
||||||
CLASS_NAME: 'OpenLayers.Geometry.MultiPoint',
|
CLASS_NAME: 'OpenLayers.Geometry.MultiPoint',
|
||||||
components: [{CLASS_NAME: 'OpenLayers.Geometry.Point'}]
|
components: [point]
|
||||||
};
|
}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(multipoint, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawPoint when passed a multi-point");
|
t.ok(properDraw, "drawGeometry called drawPoint when passed a multi-point");
|
||||||
|
|
||||||
// multi-linestring
|
// multi-linestring
|
||||||
@@ -290,12 +295,12 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {
|
var multilinestring = OpenLayers.Util.applyDefaults({
|
||||||
CLASS_NAME: 'OpenLayers.Geometry.MultiLineString',
|
CLASS_NAME: 'OpenLayers.Geometry.MultiLineString',
|
||||||
components: [{CLASS_NAME: 'OpenLayers.Geometry.LineString'}]
|
components: [linestring]
|
||||||
};
|
}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(multilinestring, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawLineString when passed a multi-linestring");
|
t.ok(properDraw, "drawGeometry called drawLineString when passed a multi-linestring");
|
||||||
|
|
||||||
// multi-polygon
|
// multi-polygon
|
||||||
@@ -304,12 +309,12 @@
|
|||||||
properDraw = true;
|
properDraw = true;
|
||||||
return {};
|
return {};
|
||||||
};
|
};
|
||||||
geometry = {
|
var multipolygon = OpenLayers.Util.applyDefaults({
|
||||||
CLASS_NAME: 'OpenLayers.Geometry.MultiPolygon',
|
CLASS_NAME: 'OpenLayers.Geometry.MultiPolygon',
|
||||||
components: [{CLASS_NAME: 'OpenLayers.Geometry.Polygon'}]
|
components: [polygon]
|
||||||
};
|
}, geometry);
|
||||||
style = true;
|
style = true;
|
||||||
r.drawGeometry(geometry, style);
|
r.drawGeometry(multipolygon, style);
|
||||||
t.ok(properDraw, "drawGeometry called drawPolygon when passed a multi-polygon");
|
t.ok(properDraw, "drawGeometry called drawPolygon when passed a multi-polygon");
|
||||||
|
|
||||||
tearDown();
|
tearDown();
|
||||||
@@ -489,7 +494,8 @@
|
|||||||
|
|
||||||
var geometry = {
|
var geometry = {
|
||||||
id: 'foo',
|
id: 'foo',
|
||||||
CLASS_NAME: 'bar'
|
CLASS_NAME: 'bar',
|
||||||
|
getBounds: function() {return {bottom: 0}}
|
||||||
};
|
};
|
||||||
var style = {
|
var style = {
|
||||||
graphicZIndex: 10
|
graphicZIndex: 10
|
||||||
|
|||||||
Reference in New Issue
Block a user