#628 - a feature has a geometry - a geometry doesn't have a feature - features are rendered, selected, moved, modified, etc - down in the renderer, expando properties on nodes are limited to _featureId, _style, and _options - this removes expandos that created circular references back through the map and to other dom elements - when the renderer is involved in selecting features, it returns a featureId (instead of a geometry or feature) and the layer is responsible for fetching the appropriate feature

git-svn-id: http://svn.openlayers.org/trunk/openlayers@3043 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
Tim Schaub
2007-04-10 16:07:56 +00:00
parent 8af1822d94
commit 645bff1286
21 changed files with 335 additions and 336 deletions
-1
View File
@@ -2,7 +2,6 @@
<head>
<script src="../../lib/OpenLayers.js"></script>
<script type="text/javascript"><!--
var isMozilla = (navigator.userAgent.indexOf("compatible") == -1);
var map;
var feature;
+41 -2
View File
@@ -21,8 +21,7 @@
var layer = new OpenLayers.Layer.Vector(name);
var point = new OpenLayers.Geometry.Point(-111.04, 45.68);
var pointFeature = new OpenLayers.Feature.Vector(layer, point);
var pointFeature = new OpenLayers.Feature.Vector(point);
layer.addFeatures([pointFeature]);
t.eq(layer.features.length, 1, "OpenLayers.Layer.Vector.addFeatures adds something to the array");
@@ -60,6 +59,46 @@
layer.addFeatures(f);
t.ok( f.style != null, "Feature style is set by layer.");
}
function test_Layer_Vector_drawFeature(t) {
t.plan(4);
var layer = new OpenLayers.Layer.Vector("Test Layer");
var map = new OpenLayers.Map('map');
map.addLayer(layer);
var geometry = new OpenLayers.Geometry.Point(10, 10);
var feature = new OpenLayers.Feature.Vector(geometry);
var f, s;
layer.renderer = {
drawFeature: function(feature, style) {
f = feature;
s = style;
}
};
layer.drawFeature(feature);
t.ok(geometry.equals(f.geometry),
"calls layer.renderer.drawFeature() with feature.geometry");
feature.style = 'exists';
layer.drawFeature(feature);
t.eq(feature.style, s,
"calls layer.renderer.drawFeature() with feature.style");
feature.style = null;
layer.style = 'exists';
layer.drawFeature(feature);
t.eq(layer.style, s,
"given null feature style, uses layer style");
feature.style = 'exists';
layer.style = 'exists';
var customStyle = 'custom';
layer.drawFeature(feature, customStyle);
t.eq(customStyle, s,
"given a custom style, renders with that");
}
function test_Layer_Vector_destroyFeatures (t) {
t.plan(2);
+1 -3
View File
@@ -178,11 +178,10 @@
}
function test_99_Geometry_destroy(t) {
t.plan( 3 );
t.plan( 2 );
var g = new OpenLayers.Geometry();
g.bounds = new OpenLayers.Bounds();
g.feature = new Object();
g_style_destroy = null;
g.destroy();
@@ -190,7 +189,6 @@
t.eq(g.id, null, "id nullified");
t.eq(g.bounds, null, "bounds nullified");
t.eq(g.feature, null, "feature reference nullified");
}