Add filter functionalities by geo data
This commit is contained in:
@@ -26,12 +26,37 @@ def get_traffic_lights():
|
||||
tl_id = query_parameters.get('id')
|
||||
|
||||
if tl_id is not None:
|
||||
traffic_lights = [traffic_light for traffic_light in mongo.db.trafficLights.find({'id': tl_id})]
|
||||
traffic_lights = [traffic_light for traffic_light in
|
||||
mongo.db.trafficLights.find({'id': tl_id})]
|
||||
else:
|
||||
traffic_lights = [traffic_light for traffic_light in mongo.db.trafficLights.find({})]
|
||||
|
||||
return json_util.dumps({'cursor': traffic_lights})
|
||||
|
||||
|
||||
@app.route('/api/v1/resources/traffic_lights_geo', methods=['GET'])
|
||||
def get_traffic_lights_geo():
|
||||
query_parameters = request.args
|
||||
|
||||
lat = float(query_parameters.get('lat'))
|
||||
lon = float(query_parameters.get('lon'))
|
||||
distance = float(query_parameters.get('distance'))
|
||||
|
||||
traffic_lights = [
|
||||
traffic_light for traffic_light in
|
||||
mongo.db.trafficLights.find({'location': {
|
||||
'$near': {
|
||||
'$geometry': {
|
||||
'type': "Point",
|
||||
'coordinates': [lon, lat]
|
||||
},
|
||||
'$maxDistance': distance
|
||||
}
|
||||
}})
|
||||
]
|
||||
|
||||
return json_util.dumps({'cursor': traffic_lights})
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(host='0.0.0.0')
|
||||
|
||||
Reference in New Issue
Block a user