diff --git a/examples/mobile-full-screen.html b/examples/mobile-full-screen.html new file mode 100644 index 0000000000..f478636a7a --- /dev/null +++ b/examples/mobile-full-screen.html @@ -0,0 +1,27 @@ + + + + + + + Mobile full screen example + + + +
+ + +
+
Mobile full screen example
+
Example of a full screen map.
+
fullscreen, bing, geolocation, mobile
+
+ + diff --git a/examples/mobile-full-screen.js b/examples/mobile-full-screen.js new file mode 100644 index 0000000000..19d54c7a2d --- /dev/null +++ b/examples/mobile-full-screen.js @@ -0,0 +1,35 @@ +goog.require('ol.Geolocation'); +goog.require('ol.Map'); +goog.require('ol.RendererHints'); +goog.require('ol.View2D'); +goog.require('ol.layer.TileLayer'); +goog.require('ol.source.BingMaps'); + + +var view = new ol.View2D({ + center: [0, 0], + zoom: 2 +}); + +var map = new ol.Map({ + layers: [ + new ol.layer.TileLayer({ + source: new ol.source.BingMaps({ + key: 'AlQLZ0-5yk301_ESrmNLma3LYxEKNSg7w-e_knuRfyYFtld-UFvXVs38NOulku3Q', + style: 'Road' + }) + }) + ], + renderers: ol.RendererHints.createFromQueryData(), + target: 'map', + view: view +}); + +var geolocation = new ol.Geolocation({ + tracking: true +}); +geolocation.bindTo('projection', view); +geolocation.on('position_changed', function() { + view.setCenter(geolocation.getPosition()); + view.setResolution(2.388657133911758); +}); diff --git a/src/objectliterals.jsdoc b/src/objectliterals.jsdoc index efd75780ce..1c9b194871 100644 --- a/src/objectliterals.jsdoc +++ b/src/objectliterals.jsdoc @@ -1,3 +1,10 @@ +/** + * @typedef {Object} ol.GeolocationOptions + * @property {boolean|undefined} tracking Tracking. + * @property {GeolocationPositionOptions|undefined} trackingOptions Tracking options. + * @property {ol.ProjectionLike} projection Projection. + */ + /** * Object literal with config options for the map. * @typedef {Object} ol.MapOptions diff --git a/src/ol/geolocation.js b/src/ol/geolocation.js index 81bdc95d1b..c16a88d866 100644 --- a/src/ol/geolocation.js +++ b/src/ol/geolocation.js @@ -33,11 +33,14 @@ ol.GeolocationProperty = { /** * @constructor * @extends {ol.Object} + * @param {ol.GeolocationOptions=} opt_options Options. */ -ol.Geolocation = function() { +ol.Geolocation = function(opt_options) { goog.base(this); + var options = goog.isDef(opt_options) ? opt_options : {}; + /** * The unprojected (EPSG:4326) device position. * @private @@ -51,14 +54,23 @@ ol.Geolocation = function() { */ this.watchId_ = undefined; - this.setTracking(false); - goog.events.listen( this, ol.Object.getChangedEventType(ol.GeolocationProperty.PROJECTION), this.handleProjectionChanged_, false, this); goog.events.listen( this, ol.Object.getChangedEventType(ol.GeolocationProperty.TRACKING), this.handleTrackingChanged_, false, this); + + if (goog.isDef(options.projection)) { + this.setProjection(ol.projection.get(options.projection)); + } + if (goog.isDef(options.trackingOptions)) { + this.setTrackingOptions(options.trackingOptions); + } + if (goog.isDef(options.tracking)) { + this.setTracking(options.tracking); + } + }; goog.inherits(ol.Geolocation, ol.Object);