在Django中,我一直试图获取一个搜索字段来对地理位置进行地理编码,并从我的db中按距离排序列出一个列表。到目前为止,除了当我搜索Google返回多个结果表单(如“ann arbor,MI”)之外的所有内容。我得到的ValueError异常“没有准确地找到一个地标!(找到2)”这是我的views.pyGeopy ValueError在地理编码中“找不到一个匹配项”
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})
常见的解决办法我在网上找到了改变
location, (lat, lon) = g.geocode(query)
到
location, (lat, lon) = g.geocode(query, exactly_one=False)
但是,这产生了新的ValueError“字符串或unicode输入无法识别为WKT EWKT和HEXEWKB。”
这是我在教程之外做的第一个django项目,所以谢谢你是异教徒。