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

Vue.js+Axios调用geo.api.gouv实现支持空格/重音的城市模糊搜索

解决方案

你遇到的问题核心有两个:一是Vuetify的v-autocomplete默认开启了本地精确匹配,会过滤掉接口返回的不精确匹配结果;二是你的API调用代码存在语法错误,且没有对搜索词做兼容预处理,具体修改步骤如下:

1. 修改v-autocomplete组件配置

关闭组件自带的本地过滤逻辑,直接使用远程接口返回的结果列表,同时修正你代码里的中文引号错误:

<v-autocomplete
    v-else
    @input="inputCity('departureCity', 'departureDepartment', selectedArrayCityDeparture)"
    :loading="loading"
    :items="citiesDeparture"
    :search-input.sync="searchCitiesDeparture"
    v-model="selectedArrayCityDeparture"
    :rules="[
        (value) => searchCitiesDeparture !== null || $t('form.validation.theDepartureCity') + ' ' + $t('isRequired')
        ]"
    text
    hide-no-data
    no-filter <!-- 新增这行,关闭本地过滤 -->
    required
    :label="$t('form.departureCity')"
    :no-data-text="$t('noDataAvailable')"
/>

到达站的v-autocomplete组件也要做相同修改,加上no-filter属性。

2. 修复API调用封装的语法错误

你当前的API地址末尾多了一个多余的双引号,会导致请求参数异常,同时可以添加limit参数控制返回结果数量:

gouv: {
    cities: function (name) {
        // 去掉末尾多余的双引号,新增limit参数限制返回10条结果,可自行调整
        return ('https://geo.api.gouv.fr/communes?nom=' + encodeURIComponent(name) + '&fields=&format=json&geometry=centre&limit=10');
    }
},

这里新增了encodeURIComponent处理关键词,避免特殊字符导致请求异常。

3. 新增关键词规范化预处理(可选,提升匹配兼容性)

你可以在调用接口前对用户输入的关键词做重音移除、多余空格合并处理,进一步适配非精确输入场景:
首先在methods里新增规范化工具方法:

// 新增文本规范化方法,移除重音、合并多余空格、转小写
normalizeText(str) {
  return str.normalize('NFD')
    .replace(/[\u0300-\u036f]/g, '') // 移除重音符号
    .replace(/\s+/g, ' ') // 合并多个空格为单个
    .trim()
    .toLowerCase()
},

然后修改querySelections方法,预处理搜索词,同时补全加载状态设置:

querySelections(q, cities) {
  // 预处理搜索词
  const processedQ = this.normalizeText(q)
  this.loading = true // 调用接口前开启加载状态
  this.$axios.get(this.apiRoutes.gouv.cities(processedQ)).then(
    response => {
      this.loading = false;
      this[cities] = _.map(response.data, function (item, i) {
          return ({ text: item.nom + ' (' + item.codeDepartement + ')' , value: i });
      });
      this.responseCities = response.data;
    }
  )
},

修改完成后即可实现和官方演示一致的模糊搜索能力,支持不带重音、空格变体的输入匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 06:57:03