UNPKG

884 BJavaScriptView Raw
1
2// Reverse GeoCoding geo_distance Query
3
4var baseQuery = require('./reverse_geo_base');
5
6module.exports = function( centroid, opts ){
7
8 if( !opts ){ opts = {}; }
9
10 var options = {
11 distance: opts.distance || '50km',
12 size: opts.size || 1,
13 field: opts.field || 'center_point'
14 }
15
16 var query = baseQuery( centroid, options );
17
18 var filter = {
19 'geo_distance' : {
20 'distance': options.distance,
21 'distance_type': 'plane',
22 'optimize_bbox': 'indexed',
23 '_cache': true // Speed up duplicate queries. Memory impact?
24 }
25 }
26
27 filter.geo_distance[ options.field ] = {
28 'lat': Number( centroid.lat ).toFixed(2), // @note: make filter cachable
29 'lon': Number( centroid.lon ).toFixed(2) // precision max ~1.113km off
30 }
31
32 // Add geo_distance specific filter conditions
33 query.query.filtered.filter.bool.must.push( filter );
34
35 return query;
36}
\No newline at end of file