Add projection argument when loading features

This commit is contained in:
Tom Payne
2014-03-12 15:27:52 +01:00
parent cbbcab926e
commit b24e122d4f
4 changed files with 17 additions and 12 deletions
+1 -1
View File
@@ -908,7 +908,7 @@
* @typedef {Object} olx.source.RemoteVectorOptions * @typedef {Object} olx.source.RemoteVectorOptions
* @property {Array.<ol.Attribution>|undefined} attributions Attributions. * @property {Array.<ol.Attribution>|undefined} attributions Attributions.
* @property {ol.Extent|undefined} extent Extent. * @property {ol.Extent|undefined} extent Extent.
* @property {function(ol.Extent, number): string} extentUrlFunction Extent URL function. * @property {function(ol.Extent, number, ol.proj.Projection): string} extentUrlFunction Extent URL function.
* @property {Object.<string, string>|undefined} headers Headers. * @property {Object.<string, string>|undefined} headers Headers.
* @property {ol.format.Feature} format Format. * @property {ol.format.Feature} format Format.
* @property {function(ol.Extent, number): Array.<ol.Extent>} loadingFunction Loading function. * @property {function(ol.Extent, number): Array.<ol.Extent>} loadingFunction Loading function.
@@ -170,7 +170,9 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
} }
var frameStateExtent = frameState.extent; var frameStateExtent = frameState.extent;
var frameStateResolution = frameState.view2DState.resolution; var view2DState = frameState.view2DState;
var projection = view2DState.projection;
var resolution = view2DState.resolution;
var pixelRatio = frameState.pixelRatio; var pixelRatio = frameState.pixelRatio;
var vectorLayerRevision = vectorLayer.getRevision(); var vectorLayerRevision = vectorLayer.getRevision();
var vectorLayerRenderOrder = vectorLayer.getRenderOrder(); var vectorLayerRenderOrder = vectorLayer.getRenderOrder();
@@ -179,7 +181,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
} }
if (!this.dirty_ && if (!this.dirty_ &&
this.renderedResolution_ == frameStateResolution && this.renderedResolution_ == resolution &&
this.renderedRevision_ == vectorLayerRevision && this.renderedRevision_ == vectorLayerRevision &&
this.renderedRenderOrder_ == vectorLayerRenderOrder && this.renderedRenderOrder_ == vectorLayerRenderOrder &&
ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) { ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) {
@@ -204,10 +206,10 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
if (!goog.isDef(styleFunction)) { if (!goog.isDef(styleFunction)) {
styleFunction = ol.feature.defaultStyleFunction; styleFunction = ol.feature.defaultStyleFunction;
} }
var tolerance = frameStateResolution / (2 * pixelRatio); var tolerance = resolution / (2 * pixelRatio);
var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent, var replayGroup =
frameStateResolution); new ol.render.canvas.ReplayGroup(tolerance, extent, resolution);
vectorSource.loadFeatures(extent, frameStateResolution); vectorSource.loadFeatures(extent, resolution, projection);
var renderFeature = var renderFeature =
/** /**
* @param {ol.Feature} feature Feature. * @param {ol.Feature} feature Feature.
@@ -216,7 +218,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
function(feature) { function(feature) {
goog.asserts.assert(goog.isDef(styleFunction)); goog.asserts.assert(goog.isDef(styleFunction));
var dirty = this.renderFeature( var dirty = this.renderFeature(
feature, frameStateResolution, pixelRatio, styleFunction, replayGroup); feature, resolution, pixelRatio, styleFunction, replayGroup);
this.dirty_ = this.dirty_ || dirty; this.dirty_ = this.dirty_ || dirty;
}; };
if (!goog.isNull(vectorLayerRenderOrder)) { if (!goog.isNull(vectorLayerRenderOrder)) {
@@ -228,7 +230,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame =
} }
replayGroup.finish(); replayGroup.finish();
this.renderedResolution_ = frameStateResolution; this.renderedResolution_ = resolution;
this.renderedRevision_ = vectorLayerRevision; this.renderedRevision_ = vectorLayerRevision;
this.renderedRenderOrder_ = vectorLayerRenderOrder; this.renderedRenderOrder_ = vectorLayerRenderOrder;
this.replayGroup_ = replayGroup; this.replayGroup_ = replayGroup;
+4 -3
View File
@@ -38,7 +38,7 @@ ol.source.RemoteVector = function(options) {
/** /**
* @private * @private
* @type {function(ol.Extent, number): string} * @type {function(ol.Extent, number, ol.proj.Projection): string}
*/ */
this.extentUrlFunction_ = options.extentUrlFunction; this.extentUrlFunction_ = options.extentUrlFunction;
@@ -74,7 +74,8 @@ ol.source.RemoteVector.prototype.addFeaturesInternal = function(features) {
/** /**
* @inheritDoc * @inheritDoc
*/ */
ol.source.RemoteVector.prototype.loadFeatures = function(extent, resolution) { ol.source.RemoteVector.prototype.loadFeatures =
function(extent, resolution, projection) {
var loadedExtents = this.loadedExtents_; var loadedExtents = this.loadedExtents_;
var extentsToLoad = this.loadingFunction_(extent, resolution); var extentsToLoad = this.loadingFunction_(extent, resolution);
var i, ii; var i, ii;
@@ -89,7 +90,7 @@ ol.source.RemoteVector.prototype.loadFeatures = function(extent, resolution) {
return ol.extent.containsExtent(object.extent, extentToLoad); return ol.extent.containsExtent(object.extent, extentToLoad);
}); });
if (!alreadyLoaded) { if (!alreadyLoaded) {
var url = this.extentUrlFunction_(extentToLoad, resolution); var url = this.extentUrlFunction_(extentToLoad, resolution, projection);
this.loadFeaturesFromURL(url); this.loadFeaturesFromURL(url);
loadedExtents.insert(extentToLoad, {extent: extentToLoad.slice()}); loadedExtents.insert(extentToLoad, {extent: extentToLoad.slice()});
} }
+2
View File
@@ -13,6 +13,7 @@ goog.require('goog.events.Event');
goog.require('goog.events.EventType'); goog.require('goog.events.EventType');
goog.require('goog.object'); goog.require('goog.object');
goog.require('ol.ObjectEventType'); goog.require('ol.ObjectEventType');
goog.require('ol.proj');
goog.require('ol.source.Source'); goog.require('ol.source.Source');
goog.require('ol.structs.RBush'); goog.require('ol.structs.RBush');
@@ -340,6 +341,7 @@ ol.source.Vector.prototype.isEmpty = function() {
/** /**
* @param {ol.Extent} extent Extent. * @param {ol.Extent} extent Extent.
* @param {number} resolution Resolution. * @param {number} resolution Resolution.
* @param {ol.proj.Projection} projection Projection.
*/ */
ol.source.Vector.prototype.loadFeatures = goog.nullFunction; ol.source.Vector.prototype.loadFeatures = goog.nullFunction;