-
Notifications
You must be signed in to change notification settings - Fork 0
Locazione
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
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
Il Mixin fornisce una serie di funzionalita'.
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).
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.
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. -->