Vector layer with BBOX Strategy isn't loaded/requested automatically, p=vmische, r=me (closes #3142)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11598 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
bartvde
2011-03-01 14:03:31 +00:00
parent 07d5822995
commit afb80bfe48
2 changed files with 37 additions and 4 deletions
+14 -4
View File
@@ -90,6 +90,14 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
"refresh": this.update, "refresh": this.update,
scope: this scope: this
}); });
if(this.layer.visibility == true) {
this.update();
} else {
this.layer.events.on({
"visibilitychanged": this.update,
scope: this
});
}
} }
return activated; return activated;
}, },
@@ -106,10 +114,8 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
if(deactivated) { if(deactivated) {
this.layer.events.un({ this.layer.events.un({
"moveend": this.update, "moveend": this.update,
scope: this
});
this.layer.events.un({
"refresh": this.update, "refresh": this.update,
"visibilitychanged": this.update,
scope: this scope: this
}); });
} }
@@ -127,7 +133,8 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
*/ */
update: function(options) { update: function(options) {
var mapBounds = this.getMapBounds(); var mapBounds = this.getMapBounds();
if ((options && options.force) || this.invalidBounds(mapBounds)) { if (mapBounds !== null && ((options && options.force) ||
this.invalidBounds(mapBounds))) {
this.calculateBounds(mapBounds); this.calculateBounds(mapBounds);
this.resolution = this.layer.map.getResolution(); this.resolution = this.layer.map.getResolution();
this.triggerRead(); this.triggerRead();
@@ -142,6 +149,9 @@ OpenLayers.Strategy.BBOX = OpenLayers.Class(OpenLayers.Strategy, {
* {<OpenLayers.Bounds>} Map bounds in the projection of the layer. * {<OpenLayers.Bounds>} Map bounds in the projection of the layer.
*/ */
getMapBounds: function() { getMapBounds: function() {
if (this.layer.map === null) {
return null;
}
var bounds = this.layer.map.getExtent(); var bounds = this.layer.map.getExtent();
if(!this.layer.projection.equals(this.layer.map.getProjectionObject())) { if(!this.layer.projection.equals(this.layer.map.getProjectionObject())) {
bounds = bounds.clone().transform( bounds = bounds.clone().transform(
+23
View File
@@ -270,6 +270,29 @@
} }
// Test fix for Ticket #3142
function test_layerLoadedAfterBeingAdded(t) {
t.plan(1);
var dummy = new OpenLayers.Layer(null, {isBaseLayer: true});
var strategy = new OpenLayers.Strategy.BBOX({
ratio: 1 // makes for easier comparison to map bounds
});
var layer = new OpenLayers.Layer.Vector(null, {
protocol: new OpenLayers.Protocol(),
strategies: [strategy]
});
var map = new OpenLayers.Map("map");
map.addLayer(dummy);
map.setCenter(new OpenLayers.LonLat(0, 0));
map.addLayer(layer);
// test that the strategy bounds were set
t.ok(map.getExtent().equals(strategy.bounds), "[set center] bounds set to map extent");
}
</script> </script>
</head> </head>
<body> <body>