You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用google-maps-services-js按多种类型检索附近地点?

解决Google Places多类型检索的问题

嘿,刚好我对这个Google Maps JS库的用法比较熟,来帮你解决这个多类型检索的问题~

首先得明确一个关键点:Google Places API的Nearby Search接口本身,type参数只支持传入单一类型值,这是官方接口的限制,不是咱们用的这个JS库的问题。不过有两个实用的办法可以实现多类型检索的需求:

方法1:使用keyword参数实现模糊多类型匹配

如果不需要严格匹配官方定义的类型,你可以把多个类型名称作为关键词传入keyword参数,API会返回匹配任意一个关键词的地点结果。比如要找附近的博物馆和公园,可以这么写:

const { Client } = require('@googlemaps/google-maps-services-js');

const client = new Client({});

// 示例请求
client.placesNearby({
  params: {
    location: { lat: 37.7749, lng: -122.4194 }, // 示例坐标(旧金山)
    radius: 5000, // 搜索半径,单位米
    keyword: 'museum park', // 多个类型用空格分隔,也可以用逗号
    key: 'YOUR_API_KEY' // 替换成你的API密钥
  },
  timeout: 10000 // 设置超时时间
})
.then(response => {
  console.log('匹配的地点列表:', response.data.results);
})
.catch(error => {
  console.error('请求出错:', error);
});

这个方法的优点是只需要一次API调用,缺点是结果可能包含部分非严格匹配类型的地点(比如带“museum”关键词的其他场所)。

方法2:多次调用API并合并去重结果

如果需要严格匹配官方支持的类型,最稳妥的方式是给每个类型单独发起一次请求,然后把结果合并并去重(用place_id作为唯一标识):

const { Client } = require('@googlemaps/google-maps-services-js');

const client = new Client({});
const targetTypes = ['museum', 'park', 'restaurant']; // 你要检索的类型数组
const searchLocation = { lat: 37.7749, lng: -122.4194 };
const searchRadius = 5000;
const apiKey = 'YOUR_API_KEY';

// 批量发起请求
Promise.all(targetTypes.map(type => {
  return client.placesNearby({
    params: {
      location: searchLocation,
      radius: searchRadius,
      type: type,
      key: apiKey
    },
    timeout: 10000
  });
}))
.then(responses => {
  // 合并所有结果并去重
  const allResults = responses.flatMap(res => res.data.results);
  const uniquePlaces = Array.from(
    new Map(allResults.map(place => [place.place_id, place])).values()
  );
  
  console.log('去重后的多类型地点:', uniquePlaces);
})
.catch(error => {
  console.error('请求过程出错:', error);
});

这个方法的优点是结果严格匹配你指定的类型,缺点是需要多次API调用,注意控制请求频率避免触发限流。

内容的提问来源于stack exchange,提问作者d.zurico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 08:19:10