Introducción
Esta es la documentación de referencia de la API SITNA, una API JavaScript para el desarrollo de mapas interactivos de manera sencilla.
Cómo empezar a usar la API SITNA
Para empezar a usar la API, basta seguir estos tres pasos: primero hay que añadir en la página una etiqueta script
con la dirección de la API:
<script src="//sitna.navarra.es/api/"></script>
A continuación, añade un elemento HTML a la página donde se va a crear el visor geográfico:
<div id="mapa"></div>
Finalmente, en un script de la página instanciar un objeto de la clase SITNA.Map
, pasándole como parámetro el
identificador creado en el paso anterior:
var map = new SITNA.Map("mapa");
El resultado es el siguiente:
A lo largo de la documentación hay ejemplos comentados con enlaces a su versión funcional online. Es recomendable abrir el código fuente de estas versiones funcionales para ver el ejemplo completo.
Cómo usar versiones anteriores
La dirección https://sitna.navarra.es/api/ siempre tendrá la última versión disponible de la API SITNA. Si se desea utilizar una versión anterior, esta deberá descargarse de GitHub.
La lista de versiones de la API SITNA de esta documentación contiene enlaces a todas las
versiones disponibles. En la página de la versión x.y.z, descargar el archivo api-sitna-vx.y.z-build.zip
correspondiente y descomprimir el contenido en una carpeta accesible para la aplicación que estemos desarrollando.
Para las versiones a partir de la 3.0.0, el archivo que hay que enlazar desde la aplicación es sitna.js
.
En las versiones desde la 1.3.0 hasta la 2.2.1, este archivo debe ser sitna.ol.min.js
.
En versiones anteriores a la 1.3.0 el archivo es sitna.ol3.min.js
.
Instalar la API SITNA mediante npm
La API SITNA está también disponible como paquete de Node.js. Para añadirlo, abre una consola de comandos en la carpeta donde está el archivo package.json de tu proyecto y ejecuta el siguiente comando:
npm install api-sitna
Definir la URL de base
La API SITNA carga en tiempo de ejecución un conjunto de recursos. Por eso es necesario indicarle la ubicación de esos archivos.
Esto se consigue definiendo una variable global SITNA_BASE_URL
que contiene la URL de la carpeta donde vamos a
ubicar dichos recursos. Es importante que esta variable se defina antes de importar cualquier clase de la API SITNA.
window.SITNA_BASE_URL = '/js/api-sitna/'; // URL de una carpeta de nuestro proyecto
Por último hay que añadir los archivos que se cargan en tiempo de ejecución. Para ello abre a la carpeta
node_modules/api-sitna
de tu proyecto y copia las carpetas config
, css
, layout
, lib
, resources
y wmts
a la carpeta
definida por SITNA_BASE_URL
. Si seguimos el ejemplo, en la carpeta del proyecto debería estar el siguiente
árbol de carpetas:
- js
- api-sitna
- config
- css
- layout
- lib
- resources
- wmts
- api-sitna
Ahora ya se puede importar los objetos de la API SITNA desde la aplicación:
import SitnaMap from 'api-sitna';
var map = new SitnaMap("mapa");
Cómo configurar Webpack
Si se utiliza Webpack para generar el código de la aplicación, se pueden automatizar las tareas descritas en el punto anterior mediante los plugins DefinePlugin y CopyWebpackPlugin. A continuación se muestra un ejemplo de archivo de configuración que se puede utilizar para empaquetar una aplicación que use la API SITNA:
const webpack = require('webpack');
const path = require('path');
const CopyWebpackPlugin = require('copy-webpack-plugin');
const apiSitnaSource = 'node_modules/api-sitna';
module.exports = {
resolve: {
// Para evitar errores "Module not found" durante el empaquetamiento
fallback: {
assert: false,
util: false
}
},
plugins: [
// Define la ruta base de la API SITNA para la carga de recursos
new webpack.DefinePlugin({
SITNA_BASE_URL: JSON.stringify('/js/api-sitna/')
}),
// Copia los recursos necesarios a la carpeta de publicación
new CopyWebpackPlugin({
patterns: [
{ from: path.join(apiSitnaSource, 'config'), to: 'config' },
{ from: path.join(apiSitnaSource, 'css'), to: 'css' },
{ from: path.join(apiSitnaSource, 'layout'), to: 'layout' },
{ from: path.join(apiSitnaSource, 'lib'), to: 'lib' },
{ from: path.join(apiSitnaSource, 'resources'), to: 'resources' },
{ from: path.join(apiSitnaSource, 'wmts'), to: 'wmts' }
]
})
],
output: {
filename: 'main.js',
path: path.resolve(__dirname, 'js/api-sitna')
}
};