-
Notifications
You must be signed in to change notification settings - Fork 15
tutorial Panel de un único control con mas de un boton
Para entender esta sección, primero hay que saber Cómo crear un control. Una vez se tiene el conocimiento sobre los controles, se va a explicar cómo crear un panel de un único control a través del siguiente ejemplo:
1./ Se añade el CSS necesario para asignar el estilo al panel
<style type="text/css">
html,
body {
margin: 0;
padding: 0;
height: 100%;
overflow: hidden;
}
.g-herramienta .m-tools:before {
content: "\1F3F3";
font-size: 22px;
font-family: none
}
/* Opening & closing buttons */
.m-panel.m-plugin-herramienta.collapsed {
height: 40px;
}
.opened .g-cartografia-flecha-izquierda {
position: absolute !important;
right: -286px !important;
color: #71a7d3 !important;
background-color: #fff !important;
}
/* Contenedor del plugin */
.m-control.m-container.m-herramienta {
width: 250px;
display: flex !important;
flex-direction: column;
overflow-x: hidden;
padding: 0px;
}
/* Título */
.m-herramienta-header {
background-color: #71a7d3;
color: white;
display: block;
font-size: 15px;
height: 40px;
line-height: 40px;
padding: 0 5px;
text-align: center;
width: 100%;
}
/* Contenedor botones controles */
.m-herramienta-previews {
display: flex;
justify-content: center;
align-items: center;
gap: 10px;
background-color: white;
width: 100%;
padding: 15px 0;
border-bottom: 1px solid #adadad;
}
/* Botones controles */
button {
-webkit-font-smoothing: antialiased;
border: 0;
background: none;
cursor: pointer;
}
button::before {
content: "🏷" !important;
font-size: 22px;
font-family: none;
}
.btn1::before {
content: "\1F3F4" !important;
font-size: 22px;
font-family: none
}
.btn2::before {
content: "\1F3F2" !important;
font-size: 22px;
font-family: none
}
.btn3::before {
content: "\1F3F1" !important;
font-size: 22px;
font-family: none
}
</style>
2./ Se crea un objeto panel y se añade al mapa
const mapajs = M.map({
container: 'mapjs',
zoom: 2,
maxZoom: 20,
minZoom: 0,
});
const panelExtra = new M.ui.Panel('toolsExtra', {
"collapsible": true,
"className": 'g-herramienta',
"collapsedButtonClass": 'm-tools',
"position": M.ui.position.TL
});
mapajs.addPanels([panelExtra]);
3./ Se crea el control y se le añade el contenido que se mostrará en el panel
const control = new M.Control(new M.impl.Control(), 'ControlPrueba');
control.createView = (map) => {
const contenedor = document.createElement('div');
const htmlPanel =
`
<div aria-label="Plugin View Management" role="menuitem" id="div-contenedor-herramienta" class="m-control m-container m-herramienta">
<header
role="heading"
tabindex="0"
id="m-herramienta-title"
class="m-herramienta-header">
Título
</header>
<section
id="m-herramienta-previews"
class="m-herramienta-previews">
<button id='btn1' class="button-herramienta btn1" onclick="myFunction1()"></button>
<button id='btn2' class="button-herramienta btn2" onclick="myFunction2()"></button>
<button id='btn3' class="button-herramienta btn3" onclick="myFunction3()"></button>
</section>
<div id="m-herramienta-contents"></div>
</div>
`
contenedor.innerHTML += htmlPanel;
return contenedor;
}
4./ Se añade la funcionalidad y se añade el control al panel
function myFunction1() {
alert('Nombre del control: ' + control.name)
}
function myFunction2() {
M.dialog.info('Nombre del control: ' + control.name);
}
function myFunction3() {
M.toast.info('Nombre del control: ' + control.name);
}
M.utils.draggabillyPlugin(panelExtra, '#m-herramienta-title');
panelExtra.addControls(control);
1.INICIO
1.1. Componentes de la API-CNIG
1.2. Documentación y Puntos de acceso
1.3. Primeros pasos
1.4. Diagrama API CNIG
2.1. Capas
■ 2.1.1. Fuentes
• 2.1.1.1. Capas vectoriales
+ Vector
+ WFS
+ GeoJSON
+ KML
+ MVT
+ OGCAPIFeatures
+ MBTilesVector
+ GenericVector
+ MapLibre
• 2.1.1.2. Capas ráster
+ WMS
+ WMTS
+ TMS
+ XYZ
+ OSM
+ MBTiles
+ GenericRaster
+ GeoTIFF
• 2.1.1.3. Capas rápidas
• 2.1.1.4. Grupo de capas
■ 2.1.2. Simbolización
• 2.1.2.1. Genérica
+ Puntos
+ Líneas
+ Polígonos
• 2.1.2.2. Básica
+ Puntos
+ Líneas
+ Polígonos
• 2.1.2.3. Avanzada
+ Coropletas
+ Proporcional
+ Categorías
+ Estadísticos
+ Mapas de Calor
+ Cluster
+ Línea de flujo
+ Composición
2.4. Paneles
» Creación de panel desde cero sin controles
» Tutorial Panel de un único control
5. API REST
5.1. Parametrización API-REST
5.2. Base de Datos API-REST
5.3. API REST Actions
5.4. Servicio de correos electrónicos
5.5. Capas rápidas
6. PARAMETRIZACIÓN VISUALIZADORES
9. GUÍA DE DESARROLLO
> Guía para el desarrollo de API-CNIG
» Tutorial desarrollo del núcleo de API-CNIG - (Cliente)
> Guía de desarrollo de componentes
» Tutorial desarrollo del núcleo de API-CNIG - (Servidor)
> Guía de desarrollo de plugins
» Tutorial desarrollo de plugins ya creados
» Tutorial desarrollo de nuevos plugins
> Guía de desarrollo de visualizadores con React