Create a custom event type for vector layers
Vector layers will now dispatch ol.layer.VectorLayerEventType.ADD and ol.layer.VectorLayerEventType.REMOVE event types instead of the generic goog.events.EventType.CHANGE event type. This will fix a maximum call stack size exceeded javascript error.
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
goog.provide('ol.layer.Vector');
|
goog.provide('ol.layer.Vector');
|
||||||
|
goog.provide('ol.layer.VectorLayerEventType');
|
||||||
|
|
||||||
goog.require('goog.array');
|
goog.require('goog.array');
|
||||||
goog.require('goog.asserts');
|
goog.require('goog.asserts');
|
||||||
goog.require('goog.events.EventType');
|
|
||||||
goog.require('goog.object');
|
goog.require('goog.object');
|
||||||
goog.require('ol.Feature');
|
goog.require('ol.Feature');
|
||||||
goog.require('ol.expr');
|
goog.require('ol.expr');
|
||||||
@@ -221,10 +221,18 @@ ol.layer.FeatureCache.prototype.remove = function(feature) {
|
|||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* TODO: Create a VectorLayerEvent with ADD and REMOVE event types
|
* @enum {string}
|
||||||
|
*/
|
||||||
|
ol.layer.VectorLayerEventType = {
|
||||||
|
ADD: 'add',
|
||||||
|
REMOVE: 'remove'
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
* @typedef {{extent: (ol.Extent|undefined),
|
* @typedef {{extent: (ol.Extent|undefined),
|
||||||
* features: (Array.<ol.Feature>|undefined),
|
* features: (Array.<ol.Feature>|undefined),
|
||||||
* type: goog.events.EventType}}
|
* type: ol.layer.VectorLayerEventType}}
|
||||||
*/
|
*/
|
||||||
ol.layer.VectorLayerEventObject;
|
ol.layer.VectorLayerEventObject;
|
||||||
|
|
||||||
@@ -304,7 +312,7 @@ ol.layer.Vector.prototype.addFeatures = function(features) {
|
|||||||
this.dispatchEvent(/** @type {ol.layer.VectorLayerEventObject} */ ({
|
this.dispatchEvent(/** @type {ol.layer.VectorLayerEventObject} */ ({
|
||||||
extent: extent,
|
extent: extent,
|
||||||
features: features,
|
features: features,
|
||||||
type: goog.events.EventType.CHANGE
|
type: ol.layer.VectorLayerEventType.ADD
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -517,7 +525,7 @@ ol.layer.Vector.prototype.removeFeatures = function(features) {
|
|||||||
this.dispatchEvent(/** @type {ol.layer.VectorLayerEventObject} */ ({
|
this.dispatchEvent(/** @type {ol.layer.VectorLayerEventObject} */ ({
|
||||||
extent: extent,
|
extent: extent,
|
||||||
features: features,
|
features: features,
|
||||||
type: goog.events.EventType.CHANGE
|
type: ol.layer.VectorLayerEventType.REMOVE
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ goog.provide('ol.renderer.canvas.VectorLayer');
|
|||||||
goog.require('goog.dom');
|
goog.require('goog.dom');
|
||||||
goog.require('goog.dom.TagName');
|
goog.require('goog.dom.TagName');
|
||||||
goog.require('goog.events');
|
goog.require('goog.events');
|
||||||
goog.require('goog.events.EventType');
|
|
||||||
goog.require('goog.object');
|
goog.require('goog.object');
|
||||||
goog.require('goog.vec.Mat4');
|
goog.require('goog.vec.Mat4');
|
||||||
goog.require('ol.Pixel');
|
goog.require('ol.Pixel');
|
||||||
@@ -14,6 +13,7 @@ goog.require('ol.ViewHint');
|
|||||||
goog.require('ol.extent');
|
goog.require('ol.extent');
|
||||||
goog.require('ol.geom.GeometryType');
|
goog.require('ol.geom.GeometryType');
|
||||||
goog.require('ol.layer.Vector');
|
goog.require('ol.layer.Vector');
|
||||||
|
goog.require('ol.layer.VectorLayerEventType');
|
||||||
goog.require('ol.renderer.canvas.Layer');
|
goog.require('ol.renderer.canvas.Layer');
|
||||||
goog.require('ol.renderer.canvas.VectorRenderer');
|
goog.require('ol.renderer.canvas.VectorRenderer');
|
||||||
goog.require('ol.tilegrid.TileGrid');
|
goog.require('ol.tilegrid.TileGrid');
|
||||||
@@ -86,7 +86,10 @@ ol.renderer.canvas.VectorLayer = function(mapRenderer, layer) {
|
|||||||
*/
|
*/
|
||||||
this.tileCache_ = new ol.TileCache(
|
this.tileCache_ = new ol.TileCache(
|
||||||
ol.renderer.canvas.VectorLayer.TILECACHE_SIZE);
|
ol.renderer.canvas.VectorLayer.TILECACHE_SIZE);
|
||||||
goog.events.listen(layer, goog.events.EventType.CHANGE,
|
goog.events.listen(layer, [
|
||||||
|
ol.layer.VectorLayerEventType.ADD,
|
||||||
|
ol.layer.VectorLayerEventType.REMOVE
|
||||||
|
],
|
||||||
this.handleLayerChange_, false, this);
|
this.handleLayerChange_, false, this);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user