Как использовать HERE Geocoder Autocomplete API с Angular и Jsonp
Когда я вызываю конечную точку HERE Geocoder Autocomplete API:
https://autocomplete.geocoder.ls.hereapi.com/6.2/suggest.json
?apiKey={YOUR_API_KEY}
&query=Pariser+1+Berl
&beginHighlight=<b>
&endHighlight=</b>
как объясняется в документации с использованием jsonp (из-за ошибки CORS), я получаю странную ошибку:
"Error: JSONP injected script did not invoke callback."
"message: "Http failure response for https://autocomplete.geocoder.ls.hereapi.com/6.2/suggest.json?query=23 Rue de &beginHighlight=<b>&endHighlight=</b>&apiKey=****&callback=ng_jsonp_callback_0: 0 JSONP Error"
Хотя это 200 ОК:
Вот моя услуга:
@Injectable({
providedIn: 'root'
})
export class LocationService {
constructor(
private http: HttpClient,
) { }
public getSuggestions(query: string): Observable<Suggestion[]> {
const options = 'beginHighlight=<b>&endHighlight=</b>';
const url = `${environment.hereDevelopper.suggestionAPIURL}?query=${query}&${options}&apiKey=${environment.hereDevelopper.key}`;
return this.http.jsonp<Suggestion[]>(url, 'callback').pipe(map(suggestions => suggestions));
}
}
Итак, мой вопрос: какие-нибудь идеи или «предложения»? ржу не могу
1 ответ
поэтому в итоге я не использовал Jsonp.
public getSuggestions(query: string): Observable<Suggestion[]> {
const options = 'beginHighlight=<b>&endHighlight=</b>';
const url = `${environment.hereDevelopper.suggestionAPIURL}?query=${query}&${options}&apiKey=${environment.hereDevelopper.key}`;
return Observable.create(observer => {
fetch(url)
.then(response => response.json())
.then(suggestions => {
observer.next(suggestions.suggestions);
observer.complete();
})
.catch(err => observer.error(err));
});
}
Вместо этого я просто использую fetch, но если у кого-то есть решение с jsonp, мне очень любопытно.