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:
@@ -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(
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user