diff --git a/build.py b/build.py
index 0afe5f6eb8..32578a3679 100755
--- a/build.py
+++ b/build.py
@@ -176,7 +176,7 @@ virtual('build', 'build/ol.css', 'build/ol.js',
'build/ol-simple.js', 'build/ol-whitespace.js')
-virtual('check', 'lint', 'build/ol.css', 'build/ol-all.js', 'test')
+virtual('check', 'lint', 'build/ol-all.js', 'test')
virtual('todo', 'fixme')
diff --git a/examples/data/gpx/gpx4j.xml b/examples/data/gpx/gpx4j.xml
new file mode 100644
index 0000000000..7c58942267
--- /dev/null
+++ b/examples/data/gpx/gpx4j.xml
@@ -0,0 +1,37 @@
+
+
+
+ 290311
+ (null)
+
+
+ 126.951324
+
+
+
+ 122.974365
+
+
+
+ 122.974365
+
+
+
+ 120.310211
+
+
+
+ 117.177261
+
+
+
+ 116.083771
+
+
+
+ 115.956726
+
+
+
+
+
diff --git a/old/examples/gpx-trkpt.html b/old/examples/gpx-trkpt.html
new file mode 100644
index 0000000000..84d45a6a77
--- /dev/null
+++ b/old/examples/gpx-trkpt.html
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+ GPX tracks example
+
+
+
+
+
+
+
+
+
+
+
+
+
GPX tracks example
+
Example of using the GPX parser to display tracks.
+
+
GPX trackpoint tracks
+
+
+
+
+
+
+
+
+
+
+
diff --git a/old/examples/gpx-trkpt.js b/old/examples/gpx-trkpt.js
new file mode 100644
index 0000000000..b0b330a57f
--- /dev/null
+++ b/old/examples/gpx-trkpt.js
@@ -0,0 +1,40 @@
+goog.require('ol.Map');
+goog.require('ol.RendererHint');
+goog.require('ol.View2D');
+goog.require('ol.layer.Tile');
+goog.require('ol.layer.Vector');
+goog.require('ol.parser.GPX');
+goog.require('ol.proj');
+goog.require('ol.source.OSM');
+goog.require('ol.source.Vector');
+goog.require('ol.style.Stroke');
+goog.require('ol.style.Style');
+
+var raster = new ol.layer.Tile({
+ source: new ol.source.OSM()
+});
+
+var vector = new ol.layer.Vector({
+ source: new ol.source.Vector({
+ parser: new ol.parser.GPX(),
+ url: 'data/gpx/gpx4j.xml'
+ }),
+ style: new ol.style.Style({
+ symbolizers: [
+ new ol.style.Stroke({
+ color: 'red',
+ opacity: 1
+ })
+ ]
+ })
+});
+
+var map = new ol.Map({
+ layers: [raster, vector],
+ renderer: ol.RendererHint.CANVAS,
+ target: 'map',
+ view: new ol.View2D({
+ center: ol.proj.transform([-0.425692, 39.114318], 'EPSG:4326', 'EPSG:3857'),
+ zoom: 19
+ })
+});
diff --git a/src/ol/object.exports b/src/ol/object.exports
index a0a76d0033..c824a78609 100644
--- a/src/ol/object.exports
+++ b/src/ol/object.exports
@@ -1,6 +1,7 @@
@exportSymbol ol.Object
@exportProperty ol.Object.prototype.bindTo
@exportProperty ol.Object.prototype.get
+@exportProperty ol.Object.prototype.getProperties
@exportProperty ol.Object.prototype.notify
@exportProperty ol.Object.prototype.on
@exportProperty ol.Object.prototype.once
diff --git a/src/ol/renderer/webgl/webglmaprenderer.js b/src/ol/renderer/webgl/webglmaprenderer.js
index 75dd46a533..f940390277 100644
--- a/src/ol/renderer/webgl/webglmaprenderer.js
+++ b/src/ol/renderer/webgl/webglmaprenderer.js
@@ -79,6 +79,7 @@ ol.renderer.webgl.Map = function(container, map) {
this.gl_ = ol.webgl.getContext(this.canvas_, {
antialias: true,
depth: false,
+ failIfMajorPerformanceCaveat: true,
preserveDrawingBuffer: false,
stencil: true
});
diff --git a/src/ol/webgl/webgl.js b/src/ol/webgl/webgl.js
index 4e84847510..8720d354d6 100644
--- a/src/ol/webgl/webgl.js
+++ b/src/ol/webgl/webgl.js
@@ -52,15 +52,21 @@ ol.webgl.getContext = function(canvas, opt_attributes) {
* @const
* @type {boolean}
*/
-ol.webgl.SUPPORTED = (function() {
- if (!('WebGLRenderingContext' in goog.global)) {
- return false;
- }
- try {
- var canvas = /** @type {HTMLCanvasElement} */
- (goog.dom.createElement(goog.dom.TagName.CANVAS));
- return !goog.isNull(ol.webgl.getContext(canvas));
- } catch (e) {
- return false;
- }
-})();
+ol.webgl.SUPPORTED = (
+ /**
+ * @return {boolean} WebGL supported.
+ */
+ function() {
+ if (!('WebGLRenderingContext' in goog.global)) {
+ return false;
+ }
+ try {
+ var canvas = /** @type {HTMLCanvasElement} */
+ (goog.dom.createElement(goog.dom.TagName.CANVAS));
+ return !goog.isNull(ol.webgl.getContext(canvas, {
+ failIfMajorPerformanceCaveat: true
+ }));
+ } catch (e) {
+ return false;
+ }
+ })();