来自谷歌地图 javascript place API searchByText 的奇怪响应

问题描述 投票:0回答:1

我正在使用 Maps JavaScript API 文本搜索(新)

searchByText()
函数来获取网络应用程序中的地点列表。它应该根据
@types/google.maps
类型返回 google.maps.places.Place[],根据上面链接的文档返回 and。但我得到了一个奇怪的对象,其中包含中间键 Eg、Fg、Hg、Ig、Jg、Kg、Lg、Mg、Ng、Og、Pg、Qg、Rg、Sg、Tg、Ug、Vg 以及实际响应
Place
Eg
键中的对象以及其他一些键中的一些重复的废话(尽管大多数是未定义的)。这是怎么回事?该应用程序是 Vue,这个结果是通过 vite 开发服务器运行它时获得的。尚未测试任何其他版本。

代码:

  const loader = new Loader({
    apiKey,
    version: '3.58'
  });
  const places: google.maps.PlacesLibrary = await loader.importLibrary('places');
  const request = {
    includedType: 'locality',
    textQuery: 'Bogota',
    fields: ['location', 'formattedAddress', 'types', 'id']
  }
  const result = await places.Place.searchByText(request);
  console.log(result);

给出(省略未定义的键):

{
  "places": [
    {
      "id": "ChIJQycDzk1B1moR7LsQHWG_MKs",
      "Eg": {
        "id": "ChIJQycDzk1B1moR7LsQHWG_MKs",
        "location": {...},
        "formattedAddress": "...",
        "types": [
          "doctor",
          "point_of_interest",
          "health",
          "establishment"
        ]
      },
      "Ng": {},
      "Ug": [
        "doctor",
        "point_of_interest",
        "health",
        "establishment"
      ],
      "Fg": {}
    }
  ]
}
javascript google-places-api
1个回答
0
投票

我认为你可以手动从响应中提取有意义的数据,例如:

const sanitizePlaces = (response: any) => {
  return response.places.map((place: any) => ({
    id: place.Eg?.id,
    location: place.Eg?.location,
    formattedAddress: place.Eg?.formattedAddress,
    types: place.Eg?.types || []
  }));
};


const sanitized = sanitizePlaces(result);
console.log(sanitized);

我认为你应该在像 vite dev 这样的开发服务器中运行一次,这可能会暴露生产中出现的问题。

const request = {
  includedType: 'locality',
  textQuery: 'Bogota',
  fields: ['geometry.location', 'formatted_address', 'types', 'place_id'] 
};
© www.soinside.com 2019 - 2024. All rights reserved.