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

NuxtJS中配置Google Places搜索框仅返回街道门牌号和路线的方法

Google Places 选中地址仅展示门牌号+道路的实现方案

Google Places API返回的地址为结构化组件格式,你只需在地址选中回调中提取对应字段拼接即可,适配NuxtJS框架的实现逻辑如下:

通用实现逻辑

所有接入方式核心逻辑一致:选中地址后,遍历返回结果的address_components数组,提取types包含street_number和route的两个字段值,拼接后赋值给搜索框绑定变量即可。

  • 不要直接使用返回结果里的formatted_address或name字段,这两个字段默认返回完整地址,无法直接过滤多余字段

场景1:使用Google官方Autocomplete原生组件

这是最常用的接入方式,监听组件的place_changed事件处理即可,NuxtJS环境下要注意初始化逻辑仅在客户端执行,避免SSR阶段报错:

// 仅客户端执行,可写在onMounted生命周期内
let autocomplete
onMounted(() => {
  autocomplete = new window.google.maps.places.Autocomplete(
    document.getElementById('address-search-input'),
    // 可根据需求调整搜索限制参数,比如限制国家
    { types: ['address'] }
  )
  // 绑定选中事件
  autocomplete.addListener('place_changed', handlePlaceSelect)
})

// 地址选中回调
const handlePlaceSelect = () => {
  const place = autocomplete.getPlace()
  let streetNumber = ''
  let route = ''

  // 遍历提取对应字段
  place.address_components?.forEach(component => {
    const typeList = component.types
    if (typeList.includes('street_number')) {
      streetNumber = component.long_name
    }
    if (typeList.includes('route')) {
      route = component.long_name
    }
  })

  // 拼接结果,处理无门牌号的边界情况
  const showAddress = [streetNumber, route].filter(Boolean).join(' ').trim()
  // 赋值给搜索框绑定的响应式变量
  searchInputVal.value = showAddress
}

场景2:自行封装请求Places API的自定义下拉组件

如果你是自行调用autocomplete接口拉取预测列表、自己实现下拉UI,选中选项后调用Place Details接口拿到完整的结构化地址数据,再套用上面的字段提取逻辑拼接结果即可。

内容的提问来源于stack exchange,提问作者Laurenz Melosantos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 12:36:03