In Django, ho cercato di ottenere un campo di ricerca per geocodificare una posizione e sputare un elenco dal mio db in ordine di distanza. Finora tutto funziona, tranne quando cerco una posizione in cui Google restituisce più risultati come "ann arbor, MI". Ho l'ValueError "Non hai trovato esattamente un segnaposto! (Trovato 2)" Ecco il mio views.pyGeopy ValueError "Non ho trovato esattamente una corrispondenza" durante il geocoding
from django.shortcuts import render_to_response
from models import CampSite
from geopy import geocoders
from django.contrib.gis.geos import *
from django.contrib.gis.measure import D
from campsites.forms import SearchForm
from django.http import HttpResponseRedirect
def results(request):
query = request.GET['q']
g = geocoders.Google(resource='maps')
location, (lat, lon) = g.geocode(query)
pnt = fromstr("POINT(%s %s)" % (lon, lat))
distance_from_point = {'mi':'2000'}
results = CampSite.objects.filter(lonlat__distance_lte=(pnt,D(**distance_from_point))).distance(pnt).order_by('distance')
return render_to_response('results.html',{'location': location, 'lat': lat, 'lon': lon, 'results':results})
La soluzione comune che ho trovato on-line è stato quello di cambiare
location, (lat, lon) = g.geocode(query)
a
location, (lat, lon) = g.geocode(query, exactly_one=False)
Tuttavia, questo ha prodotto il nuovo valore "String o input Unicode non riconosciuto come WKT EWKT e HEXEWKB".
Questo è il mio primo progetto di django che sto facendo al di fuori dei tutorial, quindi grazie per essere gentile.