@@ -7,83 +7,82 @@ const peliasUrl =
77info ( 'Pelias URL' , peliasUrl )
88
99const nearest = ( position , layers = 'address,venue' ) => {
10- const { lon, lat } = position
10+ const { lon, lat } = position
1111
12- const url = `${ peliasUrl } /v1/reverse?point.lat=${ lat } &point.lon=${ lon } &size=1&layers=${ layers } `
13- const promise = fetch ( url )
14- . then ( ( response ) => {
15- if ( ! response . ok ) throw 'pelias error: ' + response . statusText
16- return response . json ( )
12+ const url = `${ peliasUrl } /v1/reverse?point.lat=${ lat } &point.lon=${ lon } &size=1&layers=${ layers } `
13+ const promise = fetch ( url )
14+ . then ( ( response ) => {
15+ if ( ! response . ok ) throw 'pelias error: ' + response . statusText
16+ return response . json ( )
17+ } )
18+ . then ( ( p ) =>
19+ p . features [ 0 ] ?. geometry ?. coordinates ?. length
20+ ? p
21+ : Promise . reject ( 'No coordinates found' + position . toString ( ) )
22+ )
23+ . then (
24+ ( {
25+ features : [
26+ {
27+ geometry,
28+ properties : { name, street, houseNumber, localadmin, label } ,
29+ } = { } ,
30+ ] = [ ] ,
31+ } ) => ( {
32+ name,
33+ street,
34+ houseNumber,
35+ label,
36+ localadmin,
37+ position : new Position ( {
38+ lon : geometry . coordinates [ 0 ] ,
39+ lat : geometry . coordinates [ 1 ] ,
40+ } ) ,
1741 } )
18- . then ( ( p ) =>
19- p . features [ 0 ] ?. geometry ?. coordinates ?. length
20- ? p
21- : Promise . reject ( 'No coordinates found' + position . toString ( ) )
22- )
23- . then (
24- ( {
25- features : [
26- {
27- geometry,
28- properties : { name, street, houseNumber, localadmin, label } ,
29- } = { } ,
30- ] = [ ] ,
31- } ) => ( {
32- name,
33- street,
34- houseNumber,
35- label,
36- localadmin,
42+ )
43+ . catch ( ( e ) => {
44+ const error = new Error ( ) . stack
45+ console . error ( `Error in pelias nearest\n${ error } \n${ e } \n\n` )
46+ } )
47+
48+ return promise
49+ }
50+ const search = ( name , near = null , layers = 'address,venue' , size = 1000 ) => {
51+ const encodedName = encodeURIComponent ( name )
52+ const focus = near
53+ ? `&focus.point.lat=${ near . lat } &focus.point.lon=${ near . lon } }&layers=${ layers } `
54+ : ''
55+ const url = `${ peliasUrl } /v1/search?text=${ encodedName } ${ focus } &size=${ size } `
56+ process . stdout . write ( 'p' )
57+ return fetch ( url )
58+ . then ( ( response ) => {
59+ if ( ! response . ok ) throw 'pelias error: ' + response . statusText
60+ return response . json ( )
61+ } )
62+ . then ( ( results ) =>
63+ results . features
64+ . map ( ( { geometry, properties } = { } ) => ( {
65+ ...properties ,
3766 position : new Position ( {
3867 lon : geometry . coordinates [ 0 ] ,
3968 lat : geometry . coordinates [ 1 ] ,
4069 } ) ,
41- } )
42- )
43- . catch ( ( e ) => {
44- const error = new Error ( ) . stack
45- console . error ( `Error in pelias nearest\n${ error } \n${ e } \n\n` )
46- } )
47-
48- return promise
49- }
50- const search = ( name , near = null , layers = 'address,venue' , size = 1000 ) => {
51- const encodedName = encodeURIComponent ( name )
52- const focus = near
53- ? `&focus.point.lat=${ near . lat } &focus.point.lon=${ near . lon } }&layers=${ layers } `
54- : ''
55- const url = `${ peliasUrl } /v1/search?text=${ encodedName } ${ focus } &size=${ size } `
56- process . stdout . write ( 'p' )
57- return fetch ( url )
58- . then ( ( response ) => {
59- if ( ! response . ok ) throw 'pelias error: ' + response . statusText
60- return response . json ( )
61- } )
62- . then ( ( results ) =>
63- results . features
64- . map ( ( { geometry, properties } = { } ) => ( {
65- ...properties ,
66- position : new Position ( {
67- lon : geometry . coordinates [ 0 ] ,
68- lat : geometry . coordinates [ 1 ] ,
69- } ) ,
70- } ) )
71- . filter ( ( p ) => p . position . isValid ( ) )
72- )
73- . catch ( ( e ) => {
74- const peliasError = new Error ( ) . stack
75- error ( `Error in pelias search\n${ peliasError } \n${ e } \n\n` )
76- } )
77- } ,
78-
79- const searchOne = async ( name , near = null , layers = 'address,venue' ) => {
80- const results = await pelias . search ( name , near , layers , 1 )
81- return results [ 0 ]
82- }
70+ } ) )
71+ . filter ( ( p ) => p . position . isValid ( ) )
72+ )
73+ . catch ( ( e ) => {
74+ const peliasError = new Error ( ) . stack
75+ error ( `Error in pelias search\n${ peliasError } \n${ e } \n\n` )
76+ } )
77+ }
8378
79+ const searchOne = async ( name , near = null , layers = 'address,venue' ) => {
80+ const results = await search ( name , near , layers , 1 )
81+ return results [ 0 ]
82+ }
8483
8584module . exports = {
8685 nearest,
8786 search,
8887 searchOne,
89- }
88+ }
0 commit comments