-
Notifications
You must be signed in to change notification settings - Fork 2
impl js mipluginControl.js
Una vez definida la fachada del plugin, hay que desarrollar las distintas implementaciones que se deseen: ol, leaflet, etc. Recordemos que la fachada recogía la lógica no dependiente de la librería de mapas, que se usaba exclusivamente en la implementación.
> Constructor
Provee la implementación como dependencia al igual que ocurría para la fachada, instancia la implementación del control, y llama al constructor padre de M.impl.Control:
goog.provide('P.impl.control.MiControl');
M.impl.control.miPluginControl = function() {
goog.base(this);
};
goog.inherits(M.impl.control.miPluginControl, M.impl.Control);
> addTo
Define la forma de añadir el control con la implementación que estamos usando. Este método recibe el mapa y el html del control que habíamos definido previamente en el createView de la fachada del control.
Por ejemplo, si la implementación usada es OpenLayers, inciamos el control con OL y lo añadimos al mapa con su método específico:
M.impl.control.miPluginControl.prototype.addTo = function(map, html) {
this.facadeMap_ = map;
ol.control.Control.call(this, {
'element': element,
'target': null
});
map.getMapImpl().addControl(this);
};
La clase padre M.impl.Control del que hereda nuestro control M.impl.control.MiControl ya realiza estos últimos pasos, por lo que podemos ahorrarnos código llamando al método addTo del padre mediante la directiva base de closure:
M.impl.control.miPluginControl.prototype.addTo = function(map, html) {
goog.base(this,'addTo',map,html);
};
> activate, deactivate
Si queremos realizar acciones concretas sobre el mapa cuando el control se active o desactive tendremos que implementar los métodos activate y deactivate del control respectivamente:
// Ocurre al activar en el botón
M.impl.control.miPluginControl.prototype.activate = function() {
M.dialog.info('Hello World!');
};
// Ocurre al desactivar
M.impl.control.miPluginControl.prototype.deactivate = function() {
M.dialog.info('Bye World!');
};
> destroy
// TODO