Как использовать 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, мне очень любопытно.

Другие вопросы по тегам