goog.provide('M.control.Location');
goog.require('M.Control');
goog.require('M.utils');
goog.require('M.exception');
(function () {
/**
* @classdesc
* Main constructor of the class. Creates a Location
* control that allows the user to locate and draw your
* position on the map.
*
* @constructor
* @extends {M.Control}
* @api stable
*/
M.control.Location = (function (tracking, highAccuracy) {
tracking = tracking !== undefined ? tracking : true;
highAccuracy = highAccuracy !== undefined ? highAccuracy : false;
if (M.utils.isUndefined(M.impl.control.Location)) {
M.exception('La implementación usada no puede crear controles Location');
}
// implementation of this control
var impl = new M.impl.control.Location(tracking, highAccuracy, 60000);
// calls the super constructor
goog.base(this, impl, M.control.Location.NAME);
});
goog.inherits(M.control.Location, M.Control);
/**
* This function creates the view to the specified map
*
* @public
* @function
* @param {M.Map} map - Facade map
* @returns {Promise} HTML template
* @api stable
*/
M.control.Location.prototype.createView = function (map) {
return M.template.compile(M.control.Location.TEMPLATE, {
'jsonp': true
});
};
/**
* This function returns the HTML button control.
*
* @public
* @function
* @param {HTMLElement} element - Control template
* @returns {HTMLElement} HTML control button
* @api stable
* @export
*/
M.control.Location.prototype.getActivationButton = function (element) {
return element.querySelector('button#m-location-button');
};
/**
* This function checks if an object is equals
* to this control
*
* @public
* @function
* @param {*} obj - Object to compare
* @returns {boolean} equals - Returns if they are equal or not
* @api stable
*/
M.control.Location.prototype.equals = function (obj) {
var equals = (obj instanceof M.control.Location);
return equals;
};
M.control.Location.prototype.setTracking = function (tracking) {
this.getImpl().setTracking(tracking);
};
/**
* Name to identify this control
* @const
* @type {string}
* @public
* @api stable
*/
M.control.Location.NAME = 'location';
/**
* Template for this controls - button
* @const
* @type {string}
* @public
* @api stable
*/
M.control.Location.TEMPLATE = 'location.html';
})();