如何从gmaps api获取地点详细信息。 jsonp错误

时间:2018-02-14 12:25:18

标签: javascript angular google-maps typescript jsonp

https://developers.google.com/places/web-service/details

我收到CORS错误。好吧我试过在角度使用jsonp并得到另一个错误。

  

Uncaught SyntaxError:意外的令牌:

我认为这是因为gmaps api不支持jsonp。 Querying Google Places API using jQuery

但是如何通过angular从API获取地点详细信息?

代码

const params = new URLSearchParams();
params.append('key', 'MYAPIKEY');
params.append('placeid', placeId);
params.append('callback', 'JSONP_CALLBACK');
const url = 'https://maps.googleapis.com/maps/api/place/details/json';
return this.jsonp.get(url, {search: params});

getPlaceDetails(placeId: string) {
const httpParams = new HttpParams()
    .append('key', 'MYAPIKEY')
    .append('placeid', placeId);

const url = 'https://maps.googleapis.com/maps/api/place/details/json';
return this.http.get<PlaceDetail>(url, {params: httpParams}).map(c => c.result);
}

如果我使用cors chrome extension

,则第二种方法有效

1 个答案:

答案 0 :(得分:0)

如果您使用新的Http客户端,请尝试以下方法:

return this.http.get<PlaceDetail>(url, {params: httpParams, observe: 'response'}).map(c => {
  console.log(c);
  return c.result;
});

这将允许您查看_body字段中包含的响应,并执行某些操作。