Fitxer configuració Geoportal
La configuració general del geoportal –mapes base, configuració de zoom, layout, etc– es fa al fitxer de configuració. Aquest fitxer es troba dins el projecte a la següent ruta src/config/production.js. Si es vol fer ajustos en un entorn de desenvolupament també es pot modificar src/config/development.js.
El geoportal té una configuració per defecte que es pot redefinr. Aquí s’expliquen els canvis que s’hi poden aplicar:
Marca (branding)
Propietat per definir el logo de la barra d’eines i el nom que hi apareix. També s’hi pot afegir un link a l’icona convertint-lo en un botó.
branding: {
header: {
logo: require('assets/logo.png'), // jpg, png, svg
text: 'Geoportal Demo',
link: 'https://www.infraplan.cat'
}
}
Catalog
Rutes d’on s’obtenen les dades del catàleg. Si el catàleg és el de pestanyes (antic) la ruta serà (...)/giscube-admin/geoportal/category, si s’utilitza el catàleg d’arbre serà (...)/giscube-admin/geoportal/category/catalog.
catalog: {
categories: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/geoportal/category/catalog/',
search: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/geoportal/catalog/',
base: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/',
auth: true
}
Mapes Base
El geoportal pot tenir diferents mapes base que es canvien mitjançant el control de capes. Per afegir-los es defineix un array amb tots els mapes que es vulguin afegir.
Si hi ha mapes de Google s’haurà de definir l’API-key i indicar que és de tipus googleMutant.
El mapa base que es carrega per defecte ha de tenir la propietat default: true.
basemaps: [
{
default: true,
type: 'tilelayer',
name: 'Mapa base de fons',
url: 'https://atilemaps.icgc.cat/mapfactory/wmts/topo_suau/CAT3857/{z}/{x}/{y}.png',
attribution: '© <a href="https://www.icgc.cat">ICGC</a>',
maxNativeZoom: 18,
maxZoom: 21
},
{
type: 'tilelayer',
name: 'Cartografia oficial',
url: 'https://xxxxxxx.xxxxxxx.xxx/basemaps/carto2015/{z}/{x}/{y}.png',
attribution: '© <a href="http://www.xxxx.cat/">Ajuntament de xxxx</a>',
maxZoom: 21,
minZoom: 15
},
{
type: 'tilelayer',
name: 'OpenStreetMap',
url: 'http://{s}.tile.osm.org/{z}/{x}/{y}.png',
attribution: '© <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>',
maxNativeZoom: 18,
maxZoom: 21
},
{
type: 'tilelayer',
name: 'Carto DB',
url: 'https://dnv9my2eseobd.cloudfront.net/v3/cartodb.map-4xtxp73f/{z}/{x}/{y}.png',
attribution: '© <a href="http://mapbox.com/about/maps" target="_blank">Carto</a>',
maxNativeZoom: 18,
maxZoom: 21
},
{
type: 'googleMutant',
name: 'Roadmap Google',
options: {
type: 'roadmap'
},
maxNativeZoom: 18,
maxZoom: 21
}
]
Capes Base
Es poden afegir capes que es carreguin per defecte al obrir el geoportal. Per fer-ho es defineix la propietat defaultLayers com un array de les capes que es vulguin afegir.
defaultLayer: [
{
id: new GiscubeRef('23.13'), // giscube-admin catalog reference
layerDescriptor: {
title: 'Layer\'s title',
type: 'WMS',
url: 'https://demo.infraplan.cat/apps/giscube-admin/qgisserver/services/layer-name',
projection: '4326',
layers: 'layer-name'
},
options: {
// Layer options: p.e. min and max zoom
},
title: 'title',
auth: false
},
{...}
]
Edit sources
Les fonts de les dades que es poden modificar des del panell de dades.
editsources: [
{
name: 'xxxx',
url: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/'
}
],
Sistemes de coordenades
Sistemes de coordenades en què mostrar els resultats (p.e. quan es fa click al mapa).
Per fer canvis de sistemes de coordenades s’utilitza la llibreria proj4, per tant, els sistemes de referància es definiran seguint la seva sintaxi.
epsgs: [
{
label: 'Lat/Lon',
code: 'EPSG:4326',
def: '+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees',
format: ([x, y]) => `${y.toFixed(6)}°, ${x.toFixed(6)}°`
},
{
label: 'UTM (ETRS89)',
code: 'EPSG:25831',
def: '+proj=utm +zone=31 +ellps=GRS80 +units=m +no_defs',
format: ([x, y]) => `${x.toFixed(2)}m, ${y.toFixed(2)}m`
}
]
API de Google
Els mapes i eines de google necessiten una API-key per poder ser utilitzades per terceres persones. Si es vol utilitzar mapes base de Google o l’StreetView s’haurà d’introduir l’API-key al fitxer de configuració.
google: {
apiKey: 'your-api-key'
}
Mapa Geoportal
Per definir l’acció de fer click al mapa.
geoportalMap: {
queryOnClick: require('components/QueryOnClick.vue').default
}
Inici
Opcions de configuració d’inici: centre i zoom.
home: {
center: {
lat: 41.9,
lng: 2.7
},
zoom: 15
}
Control de capes
Configuració del control de capes. Mostrar o no el panell d’accions (opacitat)
layersControl: {
itemPanel: true // false if one does not want to render it
}
Layout
Amb la propietat layout es controla la configuració del disseny de l’aplicació.
La propietat geoportalMap correspon al component que construeix el mapa, el control de capes i el sidebar.
La propietat header correpson al component de la barra d’eines.
Les eines que s’inclouen a la barra d’eines es defineixen a headerToolbar. Aquesta propietat és un array de string o object. Els string corresponen a les eines definides a la propietat tools de la configuració, han de tenir el mateix nom, i apareixeran com un botó a la barra d’eines. Els object són desplegables, cada un té una icona, una etiqueta i un array d’items que conté les eines que es volen afegir al desplegable. Per posar un espai (a la barra) o una línia (al desplegable) s’ha d’incloure un string amb guions (p.e '---').
Si es vol canviar el component PlacePanel (panell de resultats) per defecte li afegirem un component diferent a defaultComponent. També es pot fer un que el component canviï depenent del cas definint una funció a strategyOptions.
La propietat sidebar permet canviar la configuració de les mides del panell.
layout: {
/* components */
geoportalMap: require('components/GeoportalMap.vue').default,
header: require('components/AppHeader.vue').default,
headerToolbar: [
'home',
'catalog',
'streetview',
'draw',
'----------',
'auth',
{
icon: 'settings',
label: 'altres',
items: [
'search',
'----------',
'data',
'share',
'----------',
'print',
'fullscreen',
'----------',
'contact'
]
}
],
placePanel: {
defaultComponent: () => require('components/PlacePanel.vue').default,
strategyField: 'content_type',
strategyOptions: {
// 'example_value': () => require('components/PlacePanelBasedComponent.vue').default
}
},
sidebar: {
initialWidthPercentage: 30,
minWidthPixels: 300,
minWidthPercentage: 24,
steps: [24, 45, 60, 75]
}
}
Idioma
Definir en quin idioma es vol el geoportal. Actualment, es suporten el català i l’anglès.
locale: {
main: 'ca',
fallback: 'en-us'
}
Oauth
L’autenticació de la connexió entre el geoportal i l’administrador es fa mitjançant la propietat oauth. Es defineix el tipus d’autenticació, l’id de client (definit a l’administrador a Inici/Seguretat/Applicacion/Geoportal). També es defineixen les rutes de token i revokeToken per registrar els login i logout a l’aplicació. Finalment, es defineix la propietat profile per indicar quin usuari està logat a l’aplicació.
oauth: {
type: 'password',
client_id: 'b84uwJOlbtjeTAtThoazZFssE4RimQh3kyEiA8Z2',
token: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/o/token/',
revokeToken: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/o/revoke-token/',
profile: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/geoportal/api/v1/profile/'
}
Motor de cerca
Classe que gestiona les cerques del panell de cerca, per defecte la classe Search del geoportal
searchEngine: Search
Cerques
Les API’s de cerca es defineixen com un array a la propietat searches. S’hi definirà la URL i si s’ha d’estar logats o no.
searches: [
{
name: 'geoportal',
title: 'Geoportal search',
url: 'https://xxxxxxx.xxxxxxx.xxx/apps/giscube-admin/geoportal/search/',
auth: true
}
]
sentry
Pendent definició
Eines
Definir les eines del geoportal. Cada eina ha de tenir una icona (per posar-la al Header) i, o bé una ruta, o bé una acció. Les rutes seran un string i les accions seran function.
A part, també es pot definir la funció supported() per indicar si l’eina pot o no ser utilitzada (p.e. si són eines reservades a usuaris logats o si es poden utilitzar en un mòbil).
Finalment, es pot afegir la propietat headerComponent si es vol canviar el component de l’eina al Header.
tools: {
auth: {
icon: 'las la-user', // icona de l'eina al Header
to: 'auth', // ruta de l'eina, quan s'activi l'eina anirà a la ruta definida al router .../geoportal/#/auth
headerComponent: require('components/header/AuthHeaderItem.js').default // el component de l'eina auth serà AuthHeaderItem
},
catalog: {
icon: 'las la-compass',
to: 'catalog'
},
data: {
icon: 'las la-pencil-alt',
to: 'data',
supported () {
return !!this.$store.state.auth.username // només apareix l'eina si l'usuari està logat
}
},
fullscreen: {
supported () {
return this.$q.fullscreen.isCapable // només apareix l'eina si el dispositiu es capaç de fer fullscreen
},
icon () {
return this.$q.fullscreen.isActive ? 'fullscreen_exit' : 'fullscreen' // l'icona depèn de l'estat de fullscreen
},
action () {
this.$q.fullscreen.toggle() // funció que s'executa quan s'activi l'eina
}
}
}