En Django, he intentado obtener un campo de búsqueda para geocodificar una ubicación y escupir una lista de mi base de datos ordenada por distancia. Hasta ahora todo funciona, excepto cuando busco una ubicación en la que Google devuelve resultados múltiples como "ann arbor, MI". Me da la ValueError "¿No ha encontrado exactamente una marca de posición! (Encontrado 2.)" Aquí está mi views.pyGeopy ValueError "No encontré exactamente una coincidencia" al geocodificar
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 solución común que encontré en línea fue cambiar
location, (lat, lon) = g.geocode(query)
a
location, (lat, lon) = g.geocode(query, exactly_one=False)
Sin embargo, esto produjo la nueva entrada ValueError "String o unicode no reconocida como WKT EWKT y HEXEWKB".
Este es mi primer proyecto django que estoy haciendo fuera de los tutoriales, así que gracias por ser gentil.