.. _widgetpedia/genro/components/geoCoderField:
geoCoderField
=============
Grazie al component ``geocoder`` è possibile, partendo da un singolo campo *Indirizzo completo*, rilevare tutti i dati di questo indirizzo (via, numero civico, città, CAP, coordinate geografiche, e così via).
Per funzionare, il *geocoder* richiede una preventiva configurazione delle `API keys di Google Maps `_. L'API key andrà inserita nel file *instanceconfig.xml* come descritto nel `Manuale dei Services `_::
Una volta impostata la chiave, sarà sufficiente compilare un qualsiasi campo di *indirizzo completo* per richiedere i dati di interesse:
.. raw:: html
Si noti che è attraverso tramite l'uso del parametro ``selected_`` che si richiede la "copia" prima dello *street_address*, poi della *locality*, del *postal_code* e infine della *position* che verrà utilizzata dalla mappa.
I parametri disponibili sono molteplici, ed è possibile visualizzarli per intero costruendo un'apposita `Bag `_ con l'attributo ``selectedRecord='.addressbag'`` (il *path* può ovviamente essere modificato a piacimento). Nell'esempio questa Bag viene poi visualizzata in un tree a mero scopo didattico.
Components accessori
--------------------
Il Geocoder può essere innanzitutto combinato con un altro mini-component, ``GoogleMap``, che permette la visualizzazione in mappa come nell'esempio.
Inoltre, può essere utile anche la visualizzazione combinata con `what3words `_, un service particolare che permette di suddividere una mappa in piccole aree di 9m quadrati (3x3), e assegnare a queste una stringa di tre parole separate da un punto. In questo modo l'area è assolutamente univoca in tutto il globo, riducendo gli errori di individuazione legati ad aree particolarmente remote o difficilmente individuabili.
Per l'implementazione di w3w fai riferimento all'esempio *geocoder* che trovi nel `package test `_
.. Vediamo nell'esempio il funzionamento con l'individuazione delle aree con w3w:
.. .. raw:: html
.. Non funziona su py2, quindi attendiamo il passaggio di dev a 3 per pubblicare direttamente l'esempio
**Reference**
API Keys di Google Maps: https://developers.google.com/maps/documentation/javascript/get-api-key
API Keys di w3w: https://developer.what3words.com/public-api
.. raw:: html
**Parametri:**
+------------------------+------+--------------------------------------------------+
| Nome parametro | Tipo | Descrizione |
+========================+======+==================================================+
|value |T |Attributo facoltativo, permette di indicare il |
| | |path dove riportare il valore inserito nel campo |
| | |dell'indirizzo completo (es: value='^.geodesc) |
+------------------------+------+--------------------------------------------------+
|selectedRecord |T |Permette di indicare il path dove riportare la bag|
| | |completa con tutti i dati ottenuti dalla richiesta|
| | |(es: selectedRecord='.full_address_bag') |
+------------------------+------+--------------------------------------------------+
|selected\_ |T |Permette di indicare il parametro di cui si vuole |
| | |copiare il valore e il path di destinazione (es: |
| | |selected_street_address='.indirizzo_via') |
+------------------------+------+--------------------------------------------------+
.. sectionauthor:: Davide Paci