Mappe e Planimetrie
Versioni:
Versione 4.5.X
Per poter visualizzare una scheda di tipo mapLayout2D (Mappa 2D) occorre preventivamente configurare appositi metadati. Tale configurazione viene gestita nella sezione “Gestione Mappe e Scene” di Geoweb Admin.
Una gwMap è un particolare metadato di Geoweb che determina in che particolare modo verrà presentata all'utente una scheda di tipo mapLayout2D, che utilizza la definizione contenuta nella gwMap stessa. Essa può, a seconda della tipologia, legare a se altri metadati di Geoweb.
Campi Comuni
- Nome, obbligatorio, deve essere uguale ad una mappa configurata in MapGuide.
- Descrizione, opzionale, non funzionale
- Sistema di Coordinate, obbligatorio per la cartografia, va configurato in modo coerente con la configurazione MapGuide Maestro. Valori di esempio: 'EPSG:3857', '3857'
- Tipologia Mappa, obbligatorio, 'Cartografia', 'Planimetria', 'Cartografia Parzializzata'
- Colore di Sfondo, opzionale, default #FFFFFF. permette di configurare un colore di sfondo, visualizzato sotto ogni altra cosa
Configurazione XML
C'è una parte di xml che determina cosa sarà presente nella UI visualizzata dall'utente, comprese le varie funzionalità, anche erogate da plugin. Questa è una configurazione generale, esempi più calzanti per le varie tipologie di mappa sono disponibili sotto. Sono gestiti commenti dentro '<!–' e ' –>'. I tag non riconosciuti e testo fuori dai tag non danno errori bloccanti.
<?xml version="1.0" encoding="UTF-8"?> <mode> <mainToolbar> <buttonGroup name='selection' /> <buttonGroup name='navigation' /> <buttonGroup name='info' /> <buttonGroup name='refresh' /> <buttonGroup name='report' /> <!--<buttonGroup name='googleStreetView' />--> <buttonGroup name='commandsTab' /> </mainToolbar> <tabList> <tab type='layers' name='layers' label='' /> <tab type='baseMaps' name='baseMaps' label='' /> <tab type='edit' name='edit' label=''> <!--<tabAttribute name='cutCopyPasteToolbar' />--> <tabAttribute name='singleInsertToolbar' /> <tabAttribute name='singleMultipleEditToolbar' /> </tab> <tab type='pluginTab' name='pluginTab' label='Custom Plugin Tab' icon32=''/> </tabList> <properties> <entry key="showScaleLineControl" value="true" /> <entry key="showScaleControl" value="true" /> <entry key="showMousePositionControl" value="true" /> <entry key="startWithMapSwitcherOpened" value="true" /> </properties> </mode>
Il tag tag <mode></mode> ha degli attributi, name, label, icon, defaultSelected attualmente non valutati. Sotto il tag <mode></mode>, sono presenti tre sezioni:
- tag <mainToolbar></mainToolbar>, ospita tag <buttonGroup/>, ognuno dei quali determina la comparsa sulla toolbar principale di un gruppo di bottoni organizzati secondo gruppi predefiniti nel framework, o resi disponibili tramite plugin.
- <buttonGroup/> predefiniti (determinati dal name):
- selection
- navigation
- info
- refresh
- report
- commandsTab particolare gruppo che rende disponibili sulla toolbar principale scorciatoie per aprire i Tab (configurabili sotto) e collassare/espandere il relativo menu a scomparsa
- googleStreetView definito su plugin (configurato, ma veramente disponibile e visualizzato solo in presenza del relativo plugin googleStreetView)
- tag <tabList></tabList>, ospita tag <tab/>, ognuno dei quali determina un tipo di tab disponibile, fra quelli predefiniti od erogati da plugin.
- <tab/> predefiniti (determinati dal type):
- layers, se presente, viene visualizzata la scheda per la gestione dei layer erogati da MapGuide
- baseMaps, se presente, viene visualizzata la scheda per la visualizzazione dei baseLayer
- edit, se presente, viene visualizzata la scheda per l'editing in mappa delle entità sulle quali l'utente è abilitato
- pluginTab, esempio di eventuale tab definito in un qualche plugin. effettivamente visualizzato solo se è presente il relativo plugin
- tag <properties></properties>, ospita tag <entry />, ognuno dei quali permette di configurare proprietà e relativi valori, che possono essere riletti in vari punti del framework, anche ad uso e consumo dei plugin. Le proprietà, booleane, conosciute e valutate di default (che hanno prevalenza anche sulle corrispettive eventualmente definite nell' xml di progetto), sono:
- showScaleLineControl
- showScaleControl
- showMousePositionControl
- startWithMapSwitcherOpened
Associazione a MapGuide
E' prassi associare alla gwMap, una corrispettiva mappa definita in MapGuide Maestro (mgMap). Questo viene fatto soprattutto per sfruttare le funzionalità del motore cartografico MapGuide, che permette di renderizzare in maniera molto efficiente un numero molto elevato di entità per il Bounding Box corrente della mappa (definito, a parità di spazio disponibile in finestra del browser, dalla posizione corrente della finestra di mappa e dal livello corrente di zoom). Inoltre sono presenti logiche di selezioni delle entità renderizzare in mappa, basate su query spaziali, in cui il motore Cartografico di MapGuide è parte fondamentale.
Sfondi Cartografici (BaseLayer e WMS)
A mappe di tipo cartografico, sono in genere associati dei metadati atti a visualizzare uno sfondo cartografico. Questi, i baseLayer, sono definiti e configurati a parte (sempre nello stesso albero) e possono essere associati alla singola gwMap. Le tipologie disponibili sono fisse e sono erogate dai principali provider di servizi di cartografia: Google, Bing, OpenStreetMap. Esistono inoltre dei particolari sfondi cartografici, definiti di tipo WMS, e configurati per lavorare con appositi servizi erogati da server esterni a geoweb. Una guida sui servizi WMS e loro configurazioen è disponibile qui.
Layer Openlayers
Esistono poi anche dei layer di tipo Openlayers, che possono essere configurati e visualizzati indipendentemente da MapGuide. Essi vanno creati nella sezione 'Layer', delle varie gwClass interessate (nell'albero 'Temi e Classi'), ed associati alla gwMap desiderata. Essi vengono rendderizzati ad ogni apertura mappa, permettono customizzazioni spinte nelle renderizzazione delle varie entità rappresentate in mappa. Se esistono si possono utilizzare anche per avere punti di snap aggiuntivi durante le fasi di editing in mappa. Hanno lo svantaggio che, essendo sempre renderizzati tutti per un dato BoundingBox corrente della gwMap, in caso di un elevato numero di entità ci potrebbe essere un degrado nelle performance.
Mappa Cartografica
E' la tipologia usata per rappresentare entità distribuite sul territorio, mediante il supporto di mappe cartografiche. La si sceglie configurando 'Cartografia' nel select Tipologia Mappa. Va obbligatoriamente configurato il Sistema di Coordinate.
Nell'xml notiamo tra i buttonGroup la presenza di googleStreetView, che è erogato dall' apposito plugin googleStreetView, ed è una funzionalità usabile solo nelle mappe cartografiche (a cui tra l'altro sono associati baseLayer Google opportunamente configurati per farsi erogare i vari servizi dal Provider Google). Essendo una mappa cartografica è presente il tab con type='baseMaps'.
- carthografic_map_template.xml
<?xml version="1.0" encoding="UTF-8"?> <mode> <mainToolbar> <buttonGroup name='selection' /> <buttonGroup name='navigation' /> <buttonGroup name='info' /> <buttonGroup name='refresh' /> <buttonGroup name='report' /> <buttonGroup name='googleStreetView' /> <buttonGroup name='commandsTab' /> </mainToolbar> <tabList> <tab type='layers' name='layers' label='' /> <tab type='baseMaps' name='baseMaps' label='' /> <tab type='edit' name='edit' label=''> <!--<tabAttribute name='cutCopyPasteToolbar' />--> <tabAttribute name='singleInsertToolbar' /> <tabAttribute name='singleMultipleEditToolbar' /> </tab> </tabList> <properties> <entry key="showScaleLineControl" value="true" /> <entry key="showScaleControl" value="true" /> <entry key="showMousePositionControl" value="true" /> <entry key="startWithMapSwitcherOpened" value="true" /> </properties> </mode>
BaseLayer associati alla mappa (configurati a parte).
Associazione con la mappa MapGuide.
Mappa Planimetrica
E' la tipologia usata per rappresentare entità distribuite su planimetrie di edifici. La parte architettonica e delle entità presenti è erogata tramite MapGuide. Le entità possono opzionalmente avere anche un layer OpenLayers. La si sceglie configurando 'Planimetria' nel select Tipologia Mappa. Non va configurato il Sistema di Coordinate.
Essendo una mappa planimetrica non è presente il tab con type='baseMaps'.
Lato xml, è stato aggiunto il tab con type furniture, che è reso disponibile dal plugin fornitureplugin.
- planimetric_map_template.xml
<?xml version="1.0" encoding="UTF-8"?> <mode> <mainToolbar> <buttonGroup name='selection' /> <buttonGroup name='navigation' /> <buttonGroup name='info' /> <buttonGroup name='refresh' /> <buttonGroup name='report' /> <buttonGroup name='commandsTab' /> </mainToolbar> <tabList> <tab type='layers' name='layers' label='' icon32=''/> <tab type='edit' name='edit' label=''> <!--<tabAttribute name='cutCopyPasteToolbar' />--> <tabAttribute name='singleInsertToolbar' /> <tabAttribute name='singleMultipleEditToolbar' /> </tab> <!--adding some specific planimetry plugins--> <tab type='furniture' name='furniture' label=''/> </tabList> <properties> <entry key="showScaleLineControl" value="true" /> <entry key="showScaleControl" value="true" /> <entry key="showMousePositionControl" value="true" /> <entry key="startWithMapSwitcherOpened" value="true" /> </properties> </mode>
Essendo una Planimetria, in questo caso non c'è alcun BaseLayer associato alla mappa.
Associazione con la mappa MapGuide.
In questo caso è associato anche qualche layer di tipo OpenLayers che anche se configurato (a parte) come invisibile, è utile per lo snap in fase di editing Arredi in Planimetria.
Mappa Cartografica Parzializzata
Si utilizza per casi particolari, in cui i dati di una mappa fondamentalmente cartografica, sono gestiti in maniera simile ai criteri di partializzazione usati per le planimetrie (basati sulla presenza del campo DRAWING sulle tabelle, e relative configurazioni). Questa modalità d'uso è spesso associata alla presenza di specifici parametri in sessione.
Versione 4.0.X
Le configurazioni sono molto simili a quanto descritto sopra, ad eccezione del fatto che non esisteva del tutto la parte xml. Quindi non c'è la possibilità di scegliere, mappa per mappa, quali gruppi di bottoni o schede laterali mostrare. Le logiche sono regolate da rigidi automatismi. Inoltre la parte di configurazione presente nel tag <properties> del'xml è recuperata in toto dall'xml di progetto, nella sezione <mapSettings></mapSettings>. In caso non fosse configurata si fa ancora riferimento a dei valori di default.