Give vector image source a style option

This commit is contained in:
Tim Schaub
2014-02-07 12:32:42 -07:00
parent 1072f6dfa7
commit b309c44020
4 changed files with 41 additions and 18 deletions

View File

@@ -121,7 +121,7 @@ dragAndDropInteraction.on('addfeatures', function(event) {
map.getLayers().push(new ol.layer.Image({ map.getLayers().push(new ol.layer.Image({
source: new ol.source.ImageVector({ source: new ol.source.ImageVector({
source: vectorSource, source: vectorSource,
styleFunction: styleFunction style: styleFunction
}) })
})); }));
var view2D = map.getView().getView2D(); var view2D = map.getView().getView2D();

View File

@@ -11,16 +11,6 @@ goog.require('ol.style.Stroke');
goog.require('ol.style.Style'); goog.require('ol.style.Style');
var styleArray = [new ol.style.Style({
fill: new ol.style.Fill({
color: 'rgba(255, 255, 255, 0.6)'
}),
stroke: new ol.style.Stroke({
color: '#319FD3',
width: 1
})
})];
var map = new ol.Map({ var map = new ol.Map({
layers: [ layers: [
new ol.layer.Tile({ new ol.layer.Tile({
@@ -32,9 +22,15 @@ var map = new ol.Map({
projection: 'EPSG:3857', projection: 'EPSG:3857',
url: 'data/geojson/countries.geojson' url: 'data/geojson/countries.geojson'
}), }),
styleFunction: function(feature, resolution) { style: new ol.style.Style({
return styleArray; fill: new ol.style.Fill({
} color: 'rgba(255, 255, 255, 0.6)'
}),
stroke: new ol.style.Stroke({
color: '#319FD3',
width: 1
})
})
}) })
}) })
], ],

View File

@@ -736,8 +736,8 @@
* new canvases will be created for these resolutions only. * new canvases will be created for these resolutions only.
* @property {ol.source.Vector} source The vector source from which the vector * @property {ol.source.Vector} source The vector source from which the vector
* features drawn in canvas elements are read. * features drawn in canvas elements are read.
* @property {ol.feature.StyleFunction|undefined} styleFunction Style function * @property {ol.style.Style|Array.<ol.style.Style>|ol.feature.StyleFunction|undefined} style
* providing the styles to use when rendering features to the canvas. * Style to use when rendering features to the canvas.
*/ */
/** /**

View File

@@ -12,6 +12,7 @@ goog.require('ol.render.canvas.ReplayGroup');
goog.require('ol.renderer.vector'); goog.require('ol.renderer.vector');
goog.require('ol.source.ImageCanvas'); goog.require('ol.source.ImageCanvas');
goog.require('ol.source.Vector'); goog.require('ol.source.Vector');
goog.require('ol.style.Style');
goog.require('ol.vec.Mat4'); goog.require('ol.vec.Mat4');
@@ -40,12 +41,38 @@ ol.source.ImageVector = function(options) {
*/ */
this.source_ = options.source; this.source_ = options.source;
/**
* @type {ol.feature.StyleFunction}
*/
var styleFunction;
if (goog.isDef(options.style)) {
if (goog.isFunction(options.style)) {
styleFunction = /** @type {ol.feature.StyleFunction} */ (options.style);
} else {
/**
* @type {Array.<ol.style.Style>}
*/
var styles;
if (goog.isArray(options.style)) {
styles = options.style;
} else {
goog.asserts.assertInstanceof(options.style, ol.style.Style);
styles = [options.style];
}
styleFunction = function(feature, resolution) {
return styles;
};
}
}
/** /**
* @private * @private
* @type {!ol.feature.StyleFunction} * @type {!ol.feature.StyleFunction}
*/ */
this.styleFunction_ = goog.isDef(options.styleFunction) ? this.styleFunction_ = goog.isDef(styleFunction) ?
options.styleFunction : ol.feature.defaultStyleFunction; styleFunction : ol.feature.defaultStyleFunction;
/** /**
* @private * @private