From b24e122d4fb908e60869c15c113f4956c5ee9b22 Mon Sep 17 00:00:00 2001 From: Tom Payne Date: Wed, 12 Mar 2014 15:27:52 +0100 Subject: [PATCH] Add projection argument when loading features --- src/objectliterals.jsdoc | 2 +- .../canvas/canvasvectorlayerrenderer.js | 18 ++++++++++-------- src/ol/source/remotevectorsource.js | 7 ++++--- src/ol/source/vectorsource.js | 2 ++ 4 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index 240dd79e79..fe87dcf667 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -908,7 +908,7 @@ * @typedef {Object} olx.source.RemoteVectorOptions * @property {Array.|undefined} attributions Attributions. * @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.|undefined} headers Headers. * @property {ol.format.Feature} format Format. * @property {function(ol.Extent, number): Array.} loadingFunction Loading function. diff --git a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js index 4de7415bb1..a30659d894 100644 --- a/src/ol/renderer/canvas/canvasvectorlayerrenderer.js +++ b/src/ol/renderer/canvas/canvasvectorlayerrenderer.js @@ -170,7 +170,9 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = } 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 vectorLayerRevision = vectorLayer.getRevision(); var vectorLayerRenderOrder = vectorLayer.getRenderOrder(); @@ -179,7 +181,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = } if (!this.dirty_ && - this.renderedResolution_ == frameStateResolution && + this.renderedResolution_ == resolution && this.renderedRevision_ == vectorLayerRevision && this.renderedRenderOrder_ == vectorLayerRenderOrder && ol.extent.containsExtent(this.renderedExtent_, frameStateExtent)) { @@ -204,10 +206,10 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = if (!goog.isDef(styleFunction)) { styleFunction = ol.feature.defaultStyleFunction; } - var tolerance = frameStateResolution / (2 * pixelRatio); - var replayGroup = new ol.render.canvas.ReplayGroup(tolerance, extent, - frameStateResolution); - vectorSource.loadFeatures(extent, frameStateResolution); + var tolerance = resolution / (2 * pixelRatio); + var replayGroup = + new ol.render.canvas.ReplayGroup(tolerance, extent, resolution); + vectorSource.loadFeatures(extent, resolution, projection); var renderFeature = /** * @param {ol.Feature} feature Feature. @@ -216,7 +218,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = function(feature) { goog.asserts.assert(goog.isDef(styleFunction)); var dirty = this.renderFeature( - feature, frameStateResolution, pixelRatio, styleFunction, replayGroup); + feature, resolution, pixelRatio, styleFunction, replayGroup); this.dirty_ = this.dirty_ || dirty; }; if (!goog.isNull(vectorLayerRenderOrder)) { @@ -228,7 +230,7 @@ ol.renderer.canvas.VectorLayer.prototype.prepareFrame = } replayGroup.finish(); - this.renderedResolution_ = frameStateResolution; + this.renderedResolution_ = resolution; this.renderedRevision_ = vectorLayerRevision; this.renderedRenderOrder_ = vectorLayerRenderOrder; this.replayGroup_ = replayGroup; diff --git a/src/ol/source/remotevectorsource.js b/src/ol/source/remotevectorsource.js index 926c6fc051..3b37c560fb 100644 --- a/src/ol/source/remotevectorsource.js +++ b/src/ol/source/remotevectorsource.js @@ -38,7 +38,7 @@ ol.source.RemoteVector = function(options) { /** * @private - * @type {function(ol.Extent, number): string} + * @type {function(ol.Extent, number, ol.proj.Projection): string} */ this.extentUrlFunction_ = options.extentUrlFunction; @@ -74,7 +74,8 @@ ol.source.RemoteVector.prototype.addFeaturesInternal = function(features) { /** * @inheritDoc */ -ol.source.RemoteVector.prototype.loadFeatures = function(extent, resolution) { +ol.source.RemoteVector.prototype.loadFeatures = + function(extent, resolution, projection) { var loadedExtents = this.loadedExtents_; var extentsToLoad = this.loadingFunction_(extent, resolution); var i, ii; @@ -89,7 +90,7 @@ ol.source.RemoteVector.prototype.loadFeatures = function(extent, resolution) { return ol.extent.containsExtent(object.extent, extentToLoad); }); if (!alreadyLoaded) { - var url = this.extentUrlFunction_(extentToLoad, resolution); + var url = this.extentUrlFunction_(extentToLoad, resolution, projection); this.loadFeaturesFromURL(url); loadedExtents.insert(extentToLoad, {extent: extentToLoad.slice()}); } diff --git a/src/ol/source/vectorsource.js b/src/ol/source/vectorsource.js index 71d8dc8b2c..6c5659ab3d 100644 --- a/src/ol/source/vectorsource.js +++ b/src/ol/source/vectorsource.js @@ -13,6 +13,7 @@ goog.require('goog.events.Event'); goog.require('goog.events.EventType'); goog.require('goog.object'); goog.require('ol.ObjectEventType'); +goog.require('ol.proj'); goog.require('ol.source.Source'); goog.require('ol.structs.RBush'); @@ -340,6 +341,7 @@ ol.source.Vector.prototype.isEmpty = function() { /** * @param {ol.Extent} extent Extent. * @param {number} resolution Resolution. + * @param {ol.proj.Projection} projection Projection. */ ol.source.Vector.prototype.loadFeatures = goog.nullFunction;