与Google Maps JS API的地方循环无限调用“ open_now”

时间:2019-07-10 23:08:25

标签: javascript typescript google-maps google-maps-api-3

我正在使用Google Maps Javascript API来获取地点详细信息。截至昨天,我一直收到此错误:

RangeError: Maximum call stack size exceeded
    at Object._.Xm (common.js:1)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)
    at Object.get [as open_now] (util.js:213)

我的代码(在打字稿中)是:

async function getGooglePlaceDetails(placeId: string, sessionToken?: string) {
  const googleMapsClient = createClient({
    key: config.googleMapsServerAPIKey,
    Promise,
  });

  const response = await googleMapsClient
    .place({ placeid: placeId, sessiontoken: sessionToken })
    .asPromise();

  return response;
}

在某些地方,例如ChIJ71yZMAvSCl8RY1u0MpwXJXA(“ Houheikyou温泉”),此操作失败。

我该如何解决?

2 个答案:

答案 0 :(得分:1)

此问题最近已修复。 Google的公开问题跟踪器中也对此进行了报告:https://issuetracker.google.com/issues/137213536

该问题是由于最近的Maps JavaScript API版本3.37过渡(已由Google工程师根据公共错误已修复)引起的。

请注意,切换到旧版本是暂时的解决方法,并且在完全弃用旧版本后将不再起作用。如果新版本的错误仍然可以再现,您可以在上面的问题链接上发表评论,以供工程师进一步研究。

答案 1 :(得分:0)

这似乎与版本37中包含的util.js有关。您可以通过将Google Maps API版本字符串更改为v=quarterly或36来解决此问题。

https://maps.googleapis.com/maps/api/js?v=quarterly&key=...&libraries=geometry,drawing,places

(用您自己的库替换这些库)

有关更多详细信息,请参见:https://developers.google.com/maps/documentation/javascript/versions