Skip to content
Alfio Emanuele edited this page Dec 17, 2015 · 3 revisions

Il modulo base.geo di Jorvik fornisce i seguenti strumenti per trattare entita' geografiche:

  • Locazione (Modello)
  • ConGeolocallizzazione (Mixin)

Le funzionalita' devono essere usate attarverso il Mixin, associato al modello che si intende geolocalizzare, es.:

class Attivita(ModelloSemplice, ConGeolocalizzazione):
    # Qualcosa
    pass

Configurazione

Il modulo richiede la configurazione di una chiave per accedere alle Geocoding API. Fare riferimento alla Console Google per ottenere un codice.

La chiave deve essere configurata in config/apis.cnf:

[google]
api_key = abc123

ConGeolocalizzazione

Il Mixin fornisce una serie di funzionalita'.

Impostare la locazione

Il metodo

ConGeolocalizzazione.imposta_locazione(indirizzo)

puo' essere usato per impostare la locazione di un determinato modello.

Il metodo richiede un solo parametro, indirizzo, contenente una stringa da ricercare:

  • Se la stringa e' un indirzzo formattato correttamente (es. "Via Roma, 50, 95014 Giarre, Catania, IT"), questo viene cercato in database. Se gia' presente, associato direttamente.
  • Altrimenti, o se la stringa e' un indirizzo mal formattato (es. "via roma 50 giarre"), questo viene cercato usando le API di Google Maps.
    • Se trovato, viene creata una nuova Locazione in database ed associata all'oggetto.
    • Altrimenti, se nessun risultato viene trovato, nessuna azione viene compiuta.

Il metodo ritorna:

  • Un oggetto Locazione nel caso in cui la ricerca dell'indirizzo abbia ritornato un risultato,
  • None se l'indirizzo non e' corretto.

NOTA BENE: questo metodo effettua una chiamata API che puo' essere molto lenta. Nel caso migliore, le API forniscono da 5 richieste/s (gratis) a 10 richieste/s (a pagamento).

Ricerca elementi vicini

Il metodo

ConGeolocalizzazione.vicini(km)

ritorna un QuerySet per oggetti nelle vicinanze.

Un solo parametro e' richiesto, km, la distanza in km dall'oggetto.

Viene ritornato un QuerySet contenente gli oggetti Locazione filtrati per vicinanza. TODO: orinare per vicinanza.

Modifica della locazione (template tag)

Per mostrare un pannello di modifica della locazione, e' possibile utilizzare il tag localizzatore.

Es. 1:
{% localizzatore attivita %}

Es. 2:
{% localizzatore attivita continua_url="/modifica/prossimo/step/" %}
<!-- In questo caso mostra pulsante "Continua", utile per wizard. -->