【发布时间】:2011-10-28 09:37:03
【问题描述】:
我使用户界面看起来像添加与 facebook 的集成并启用将搜索与类别和位置相结合:
这给我带来了一些问题,不仅是 facebook 集成,还有位置。我不从数据存储中获取位置,我只是将它们放在纯 html 中:
<select name="w" id="searcharea">
<option value="1" >Entire India</option>
<option value="2" > Andaman & Nicobar Islands</option>
<option value="3" > Andhra Pradesh</option>
等等。我们看到选项值没有意义:1,2,3 没有意义,我只是把数字放在那里。数据存储中的记录可以基于经度+纬度+半径进行匹配,例如,?lat=-22.45&lon=-43.12&r=294200 之类的 URL 是一种参数化,它将里约热内卢与在这种情况下随机选择半径以匹配里约热内卢和不是圣保罗。将经度和纬度四舍五入到小数点后两位也被确定为“足够好”。但是如何在 HTML 和数据存储之间进行映射?一个 HTML 选项值只有一个值,经度 + 纬度 + 半径是三个值。我想找到一个涵盖所有内容的解决方案,而无需添加我自己的地理代码。经度、纬度和半径是国际标准,所以我自然希望避免为位置创建自己的 ID。我可能可以制定一个算法,选项值的值是一个解码为三个值的数字,例如选项值 123456789876 将解码为经度 1234、纬度 5678 和半径 9876。你能推荐任何解决方案和/或告诉我其他可能的解决方案有哪些优点和缺点?如果你想查看我所说的website,你可以通过这个链接koolbusiness.com
我希望与其他解决方案(例如地理模型和谷歌地图)保持“兼容”,因此还允许用户以与谷歌地图兼容的方式选择“行政区域”、“城市”、“国家”,因为当我使用 python 库 geomodel 为我的实体启用地理时,他们已经制作并更新了该结构及其内容:
class A(GeoModel,search.SearchableModel):
primary_image=blobstore.BlobReferenceProperty()
postaladress=db.PostalAddressProperty(indexed=False,verbose_name="postaladdress")
...
使用地理模型作品实现基本搜索:
m=int(self.request.get('r')) if self.request.get('r') else 804670#radius
lat = self.request.get('lat')
lon = self.request.get('lon')
articles = A.proximity_fetch(A.all(),db.GeoPt(lat, lon),max_results=PAGESIZE+1, max_distance=m)
articles = sorted(articles, key=lambda x: x.modified, reverse=True)
但是由于选项值只接受一个值,如何将视图与后端集成?我应该将 3 个值(经度、纬度、半径)编码为单个值吗?还是其他解决方案? 谢谢
【问题讨论】:
标签: python html google-app-engine google-maps geocoding