def search(self, q, loc, radius=1000): from .serializers import POISerializer pois = BaiduMap.search_distance(q, loc, radius) for item in pois['results']: # print item # print item['name'] # print item['location'] uid = item.get('uid') # print uid info = super(BaiduPOIManager, self).get_queryset().filter(bdpoi_id=uid) if info: info = info[0] item.update(POISerializer(info).data) return pois
def search(self, q, loc, radius): """ 融合百度POI数据和自有数据 point: 中心点坐标 tuple (lat, png) dist: 到中心点距离 """ if not isinstance(loc, Point): point = Point(loc) base = super(AroundManager, self) local = base.get_queryset().filter(coordinate__distance_lte=(point, radius)) remote = [] pois = BaiduMap.search_distance(q, reversed(loc), radius) for res in pois['results']: item = RecommendItem(title=res['name']+'(test)', summary=u'推荐理由:xxxxxx') item.publishTime = datetime.now(pytz.utc) item.id = None item.uid = res['uid'] item.category = q item.picOne = 'http://res.cloudinary.com/filesbed/image/upload/v1445245936/sample.jpg' item.picTwo = 'http://res.cloudinary.com/filesbed/image/upload/v1445245936/sample.jpg' item.picThr = 'http://res.cloudinary.com/filesbed/image/upload/v1445245936/sample.jpg' item.coordinate = Point(res['location']['lng'], res['location']['lat']) item.isLarge = random.choice([True, False]) remote.append(item) return list(local) + remote