@geosdi/ngx-geocoding 1.2.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,28 +1,25 @@
1
- import * as i0 from '@angular/core';
2
- import { InjectionToken, Provider } from '@angular/core';
3
- import { Subject, Observable } from 'rxjs';
4
-
1
+ import * as i0 from "@angular/core";
2
+ import { InjectionToken, Provider } from "@angular/core";
3
+ import { Observable, Subject } from "rxjs";
5
4
  /**
6
5
  * @author Vito Salvia - CNR IMAA geoSDI Group
7
6
  * @email vito.salvia@gmail.com
8
7
  */
9
- declare class NgxGeocodingModule {
10
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxGeocodingModule, never>;
11
- static ɵmod: i0.ɵɵNgModuleDeclaration<NgxGeocodingModule, never, never, never>;
12
- static ɵinj: i0.ɵɵInjectorDeclaration<NgxGeocodingModule>;
8
+ export declare class NgxGeocodingModule {
9
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxGeocodingModule, never>;
10
+ static ɵmod: i0.ɵɵNgModuleDeclaration<NgxGeocodingModule, never, never, never>;
11
+ static ɵinj: i0.ɵɵInjectorDeclaration<NgxGeocodingModule>;
13
12
  }
14
-
15
13
  /**
16
14
  * @author Vito Salvia - CNR IMAA geoSDI Group
17
15
  * @email vito.salvia@gmail.com
18
16
  */
19
- interface GeocodingLocation {
20
- display_name?: string;
21
- lat?: string;
22
- lon?: string;
23
- place_id?: string;
17
+ export interface GeocodingLocation {
18
+ display_name?: string;
19
+ lat?: string;
20
+ lon?: string;
21
+ place_id?: string;
24
22
  }
25
-
26
23
  /**
27
24
  * La ricerca di indirizzi, da una o più sorgenti.
28
25
  *
@@ -63,133 +60,132 @@ interface GeocodingLocation {
63
60
  * **Le proposte di Places non portano le coordinate**, che si chiedono per il
64
61
  * solo luogo scelto : vedi {@link resolve}, ed è il motivo per cui esiste.
65
62
  */
66
- declare class NgxGeocodingService {
67
- subjectLocation: Subject<GeocodingLocation>;
68
- subjectNoResults: Subject<unknown>;
69
- subjectRemove: Subject<unknown>;
70
- private http;
71
- private config;
72
- /**
73
- * Una sorgente che ha detto di no non si richiama per il resto della
74
- * sessione : chiave senza il prodotto abilitato, referrer fuori dalle
75
- * restrizioni, quota. Senza questo sarebbe una richiesta negata a ogni
76
- * tasto premuto.
77
- */
78
- private spente;
79
- /**
80
- * Dentro `google`, i gradini già scesi : `AutocompleteSuggestion` (Places
81
- * New) e `AutocompleteService` (Places legacy). Da lì in poi si parte
82
- * direttamente da dove si era arrivati.
83
- */
84
- private suggestionSpenta;
85
- private placesSpenta;
86
- /**
87
- * Le proposte per quello che si sta digitando, dalla prima sorgente che
88
- * risponde.
89
- *
90
- * @param address il testo digitato
91
- */
92
- geocode(address: string): Observable<GeocodingLocation[]>;
93
- /**
94
- * Le coordinate del luogo **scelto**, chieste solo adesso.
95
- *
96
- * Le proposte di Places arrivano senza, e risolverle tutte a ogni tasto
97
- * premuto vorrebbe dire una richiesta di dettaglio per proposta. Chi le ha
98
- * già — Nominatim le manda sempre, e il `Geocoder` pure — non paga niente e
99
- * si riprende il luogo così com'è, quindi **chiamarla è sempre corretto** :
100
- * è la riga da mettere dove si sceglie una proposta, prima di usarne `lat`
101
- * e `lon`.
102
- *
103
- * Fallendo restituisce il luogo com'è, senza coordinate : chi ha chiamato
104
- * lo sa già gestire, ed è meglio che muovere una mappa a caso.
105
- *
106
- * @param place la proposta scelta fra quelle di {@link geocode}
107
- */
108
- resolve(place: GeocodingLocation): Observable<GeocodingLocation>;
109
- /**
110
- * Le coordinate con **Places (New)** : `Place` nasce con l'id e
111
- * `fetchFields` lo **riempie**, quindi i campi si leggono dall'oggetto
112
- * dopo l'attesa e non dal valore restituito.
113
- */
114
- private luogoDaSuggestion;
115
- /** Le coordinate con **Places legacy**, cioè `PlacesService.getDetails`. */
116
- private luogoDaLegacy;
117
- /**
118
- * Prova le sorgenti in ordine, passando alla successiva quando una rifiuta.
119
- *
120
- * Finite le sorgenti si rilancia un errore invece di restituire un elenco
121
- * vuoto : «non ho trovato niente» e «non ho potuto cercare» sono due cose
122
- * diverse, e chi mostra la barra deve poterle distinguere.
123
- */
124
- private daSorgenti;
125
- /**
126
- * Nominatim, **identico a come questa libreria l'ha sempre chiamato** : è
127
- * il comportamento su cui contano le applicazioni che la usavano prima che
128
- * Google esistesse qui dentro.
129
- */
130
- private daNominatim;
131
- /**
132
- * Google : le proposte di Places, e il `Geocoder` quando Places dice di no.
133
- *
134
- * `ZERO_RESULTS` **non** è un rifiuto : è una ricerca senza esiti, e
135
- * confonderlo con un errore farebbe scivolare al `Geocoder` — e poi fuori
136
- * da Google — alla prima ricerca sfortunata.
137
- */
138
- private daGoogle;
139
- /** Il secondo e il terzo gradino : Places legacy, poi il `Geocoder`. */
140
- private dallaLegacy;
141
- /**
142
- * Le proposte di **Places (New)**, con `AutocompleteSuggestion`.
143
- *
144
- * Due cose che non si vedono dalla firma : `text` di una proposta non è una
145
- * stringa ma un oggetto formattabile, e va letto con `toString()` — messo
146
- * in un template darebbe `[object Object]` ; e un elenco **vuoto non è un
147
- * errore**, è una ricerca senza esiti, quindi non fa scendere di gradino.
148
- *
149
- * Se la classe non c'è nell'SDK — versione più vecchia — si solleva subito,
150
- * che è il modo di scendere senza aspettare una risposta che non arriverà.
151
- */
152
- private daSuggestion;
153
- /** Le proposte incrementali di `AutocompleteService`. */
154
- private daPlaces;
155
- /**
156
- * Il `Geocoder`, l'ultima strada di Google.
157
- *
158
- * I suoi risultati **portano già le coordinate**, quindi su questi
159
- * {@link resolve} non fa nessuna richiesta in più.
160
- */
161
- private daGeocoder;
162
- /** Il bias come lo vuole `AutocompleteService`. */
163
- private cerchio;
164
- /**
165
- * Il bias come lo vuole il `Geocoder`, che prende un **riquadro** e non un
166
- * cerchio : lo si iscrive attorno al punto. La longitudine si stringe con
167
- * la latitudine (`cos`), o alle nostre latitudini il riquadro verrebbe
168
- * largo un terzo in più del voluto.
169
- */
170
- private riquadro;
171
- /** Le sorgenti dichiarate, o quella storica. */
172
- private sorgenti;
173
- /**
174
- * Perché una strada ha detto di no, in una riga : dall'SDK arriva uno stato
175
- * (`REQUEST_DENIED` per la chiave senza il prodotto abilitato o per il
176
- * referrer, `OVER_QUERY_LIMIT` per la quota), da una http il corpo
177
- * d'errore. Senza questo il motivo resta dentro un oggetto che in console
178
- * va aperto, e si legge solo «si ripiega».
179
- */
180
- private perche;
181
- /**
182
- * Una coordinata come stringa, o `undefined` se non c'è.
183
- *
184
- * `String(undefined)` darebbe `"undefined"`, che passerebbe indenne per
185
- * ogni controllo di presenza e morirebbe in `Number()` — cioè una mappa
186
- * portata su `NaN, NaN` senza che niente lo dica.
187
- */
188
- private testo;
189
- static ɵfac: i0.ɵɵFactoryDeclaration<NgxGeocodingService, never>;
190
- static ɵprov: i0.ɵɵInjectableDeclaration<NgxGeocodingService>;
63
+ export declare class NgxGeocodingService {
64
+ subjectLocation: Subject<GeocodingLocation>;
65
+ subjectNoResults: Subject<unknown>;
66
+ subjectRemove: Subject<unknown>;
67
+ private http;
68
+ private config;
69
+ /**
70
+ * Una sorgente che ha detto di no non si richiama per il resto della
71
+ * sessione : chiave senza il prodotto abilitato, referrer fuori dalle
72
+ * restrizioni, quota. Senza questo sarebbe una richiesta negata a ogni
73
+ * tasto premuto.
74
+ */
75
+ private spente;
76
+ /**
77
+ * Dentro `google`, i gradini già scesi : `AutocompleteSuggestion` (Places
78
+ * New) e `AutocompleteService` (Places legacy). Da lì in poi si parte
79
+ * direttamente da dove si era arrivati.
80
+ */
81
+ private suggestionSpenta;
82
+ private placesSpenta;
83
+ /**
84
+ * Le proposte per quello che si sta digitando, dalla prima sorgente che
85
+ * risponde.
86
+ *
87
+ * @param address il testo digitato
88
+ */
89
+ geocode(address: string): Observable<GeocodingLocation[]>;
90
+ /**
91
+ * Le coordinate del luogo **scelto**, chieste solo adesso.
92
+ *
93
+ * Le proposte di Places arrivano senza, e risolverle tutte a ogni tasto
94
+ * premuto vorrebbe dire una richiesta di dettaglio per proposta. Chi le ha
95
+ * già — Nominatim le manda sempre, e il `Geocoder` pure — non paga niente e
96
+ * si riprende il luogo così com'è, quindi **chiamarla è sempre corretto** :
97
+ * è la riga da mettere dove si sceglie una proposta, prima di usarne `lat`
98
+ * e `lon`.
99
+ *
100
+ * Fallendo restituisce il luogo com'è, senza coordinate : chi ha chiamato
101
+ * lo sa già gestire, ed è meglio che muovere una mappa a caso.
102
+ *
103
+ * @param place la proposta scelta fra quelle di {@link geocode}
104
+ */
105
+ resolve(place: GeocodingLocation): Observable<GeocodingLocation>;
106
+ /**
107
+ * Le coordinate con **Places (New)** : `Place` nasce con l'id e
108
+ * `fetchFields` lo **riempie**, quindi i campi si leggono dall'oggetto
109
+ * dopo l'attesa e non dal valore restituito.
110
+ */
111
+ private luogoDaSuggestion;
112
+ /** Le coordinate con **Places legacy**, cioè `PlacesService.getDetails`. */
113
+ private luogoDaLegacy;
114
+ /**
115
+ * Prova le sorgenti in ordine, passando alla successiva quando una rifiuta.
116
+ *
117
+ * Finite le sorgenti si rilancia un errore invece di restituire un elenco
118
+ * vuoto : «non ho trovato niente» e «non ho potuto cercare» sono due cose
119
+ * diverse, e chi mostra la barra deve poterle distinguere.
120
+ */
121
+ private daSorgenti;
122
+ /**
123
+ * Nominatim, **identico a come questa libreria l'ha sempre chiamato** : è
124
+ * il comportamento su cui contano le applicazioni che la usavano prima che
125
+ * Google esistesse qui dentro.
126
+ */
127
+ private daNominatim;
128
+ /**
129
+ * Google : le proposte di Places, e il `Geocoder` quando Places dice di no.
130
+ *
131
+ * `ZERO_RESULTS` **non** è un rifiuto : è una ricerca senza esiti, e
132
+ * confonderlo con un errore farebbe scivolare al `Geocoder` — e poi fuori
133
+ * da Google — alla prima ricerca sfortunata.
134
+ */
135
+ private daGoogle;
136
+ /** Il secondo e il terzo gradino : Places legacy, poi il `Geocoder`. */
137
+ private dallaLegacy;
138
+ /**
139
+ * Le proposte di **Places (New)**, con `AutocompleteSuggestion`.
140
+ *
141
+ * Due cose che non si vedono dalla firma : `text` di una proposta non è una
142
+ * stringa ma un oggetto formattabile, e va letto con `toString()` — messo
143
+ * in un template darebbe `[object Object]` ; e un elenco **vuoto non è un
144
+ * errore**, è una ricerca senza esiti, quindi non fa scendere di gradino.
145
+ *
146
+ * Se la classe non c'è nell'SDK — versione più vecchia — si solleva subito,
147
+ * che è il modo di scendere senza aspettare una risposta che non arriverà.
148
+ */
149
+ private daSuggestion;
150
+ /** Le proposte incrementali di `AutocompleteService`. */
151
+ private daPlaces;
152
+ /**
153
+ * Il `Geocoder`, l'ultima strada di Google.
154
+ *
155
+ * I suoi risultati **portano già le coordinate**, quindi su questi
156
+ * {@link resolve} non fa nessuna richiesta in più.
157
+ */
158
+ private daGeocoder;
159
+ /** Il bias come lo vuole `AutocompleteService`. */
160
+ private cerchio;
161
+ /**
162
+ * Il bias come lo vuole il `Geocoder`, che prende un **riquadro** e non un
163
+ * cerchio : lo si iscrive attorno al punto. La longitudine si stringe con
164
+ * la latitudine (`cos`), o alle nostre latitudini il riquadro verrebbe
165
+ * largo un terzo in più del voluto.
166
+ */
167
+ private riquadro;
168
+ /** Le sorgenti dichiarate, o quella storica. */
169
+ private sorgenti;
170
+ /**
171
+ * Perché una strada ha detto di no, in una riga : dall'SDK arriva uno stato
172
+ * (`REQUEST_DENIED` per la chiave senza il prodotto abilitato o per il
173
+ * referrer, `OVER_QUERY_LIMIT` per la quota), da una http il corpo
174
+ * d'errore. Senza questo il motivo resta dentro un oggetto che in console
175
+ * va aperto, e si legge solo «si ripiega».
176
+ */
177
+ private perche;
178
+ /**
179
+ * Una coordinata come stringa, o `undefined` se non c'è.
180
+ *
181
+ * `String(undefined)` darebbe `"undefined"`, che passerebbe indenne per
182
+ * ogni controllo di presenza e morirebbe in `Number()` — cioè una mappa
183
+ * portata su `NaN, NaN` senza che niente lo dica.
184
+ */
185
+ private testo;
186
+ static ɵfac: i0.ɵɵFactoryDeclaration<NgxGeocodingService, never>;
187
+ static ɵprov: i0.ɵɵInjectableDeclaration<any>;
191
188
  }
192
-
193
189
  /**
194
190
  * @author Vito Salvia - CNR IMAA geoSDI Group
195
191
  * @email vito.salvia@gmail.com
@@ -204,7 +200,7 @@ declare class NgxGeocodingService {
204
200
  * - `nominatim` : il servizio pubblico di OpenStreetMap, che non vuole nessuna
205
201
  * chiave. È il comportamento storico di questa libreria.
206
202
  */
207
- type NgxGeocodingSource = "google" | "nominatim";
203
+ export type NgxGeocodingSource = "google" | "nominatim";
208
204
  /**
209
205
  * Il punto su cui polarizzare le proposte, e con che raggio.
210
206
  *
@@ -212,11 +208,11 @@ type NgxGeocodingSource = "google" | "nominatim";
212
208
  * ma «via Roma» propone prima quella vicina. Senza, Google ordina come crede,
213
209
  * e su un nome di via comune la prima proposta è quasi sempre altrove.
214
210
  */
215
- interface NgxGeocodingBias {
216
- lat: number;
217
- lon: number;
218
- /** Raggio in metri. */
219
- radiusM: number;
211
+ export interface NgxGeocodingBias {
212
+ lat: number;
213
+ lon: number;
214
+ /** Raggio in metri. */
215
+ radiusM: number;
220
216
  }
221
217
  /**
222
218
  * Come questa libreria cerca gli indirizzi.
@@ -225,30 +221,29 @@ interface NgxGeocodingBias {
225
221
  * quello che la libreria ha sempre fatto. Google si accende dichiarandolo in
226
222
  * {@link sources}.
227
223
  */
228
- interface NgxGeocodingConfig {
229
- /**
230
- * Le sorgenti da provare, **in ordine**. La prima che risponde vince, e
231
- * quella che rifiuta passa la mano alla successiva.
232
- *
233
- * Una sorgente che non è utilizzabile viene **saltata**, e non è un errore :
234
- * `google` senza l'SDK in pagina. È il modo in cui la stessa configurazione
235
- * vale per il deploy che ha la chiave e per quello che non ce l'ha.
236
- *
237
- * Default : `["nominatim"]`.
238
- */
239
- sources?: NgxGeocodingSource[];
240
- /**
241
- * Paese a cui limitare le proposte, in due lettere (`"it"`). Vale per
242
- * `google` — Nominatim qui non è filtrato, per non cambiare quello che la
243
- * libreria ha sempre restituito.
244
- */
245
- country?: string;
246
- /** Dove polarizzare le proposte di `google`. Vedi {@link NgxGeocodingBias}. */
247
- bias?: NgxGeocodingBias;
248
- /** Il servizio Nominatim, se non quello pubblico di OpenStreetMap. */
249
- nominatimUrl?: string;
224
+ export interface NgxGeocodingConfig {
225
+ /**
226
+ * Le sorgenti da provare, **in ordine**. La prima che risponde vince, e
227
+ * quella che rifiuta passa la mano alla successiva.
228
+ *
229
+ * Una sorgente che non è utilizzabile viene **saltata**, e non è un errore :
230
+ * `google` senza l'SDK in pagina. È il modo in cui la stessa configurazione
231
+ * vale per il deploy che ha la chiave e per quello che non ce l'ha.
232
+ *
233
+ * Default : `["nominatim"]`.
234
+ */
235
+ sources?: NgxGeocodingSource[];
236
+ /**
237
+ * Paese a cui limitare le proposte, in due lettere (`"it"`). Vale per
238
+ * `google` — Nominatim qui non è filtrato, per non cambiare quello che la
239
+ * libreria ha sempre restituito.
240
+ */
241
+ country?: string;
242
+ /** Dove polarizzare le proposte di `google`. Vedi {@link NgxGeocodingBias}. */
243
+ bias?: NgxGeocodingBias;
244
+ /** Il servizio Nominatim, se non quello pubblico di OpenStreetMap. */
245
+ nominatimUrl?: string;
250
246
  }
251
-
252
247
  /**
253
248
  * @author Vito Salvia - CNR IMAA geoSDI Group
254
249
  * @email vito.salvia@gmail.com
@@ -257,7 +252,7 @@ interface NgxGeocodingConfig {
257
252
  * La configurazione della ricerca, che **può non esserci** : in quel caso vale
258
253
  * il comportamento storico, cioè Nominatim e basta.
259
254
  */
260
- declare const NGX_GEOCODING_CONFIG: InjectionToken<NgxGeocodingConfig>;
255
+ export declare const NGX_GEOCODING_CONFIG: InjectionToken<NgxGeocodingConfig>;
261
256
  /**
262
257
  * Dichiara da dove arrivano gli indirizzi, nei `providers` dell'applicazione :
263
258
  *
@@ -275,7 +270,4 @@ declare const NGX_GEOCODING_CONFIG: InjectionToken<NgxGeocodingConfig>;
275
270
  *
276
271
  * Chi non la chiama non cambia niente.
277
272
  */
278
- declare function provideNgxGeocoding(config: NgxGeocodingConfig): Provider;
279
-
280
- export { NGX_GEOCODING_CONFIG, NgxGeocodingModule, NgxGeocodingService, provideNgxGeocoding };
281
- export type { GeocodingLocation, NgxGeocodingBias, NgxGeocodingConfig, NgxGeocodingSource };
273
+ export declare function provideNgxGeocoding(config: NgxGeocodingConfig): Provider;