当前位置:首页 > VUE

vue实现城市

2026-01-08 02:37:13VUE

Vue 实现城市选择功能

使用 Element UI 的 Cascader 组件

Element UI 提供了一个 Cascader 级联选择器组件,非常适合实现城市选择功能。需要先安装 Element UI 并导入 Cascader 组件。

<template>
  <el-cascader
    v-model="selectedCities"
    :options="cityOptions"
    :props="{ expandTrigger: 'hover' }"
    @change="handleChange"
  ></el-cascader>
</template>

<script>
export default {
  data() {
    return {
      selectedCities: [],
      cityOptions: [
        {
          value: 'beijing',
          label: '北京',
          children: [
            {
              value: 'haidian',
              label: '海淀区'
            }
          ]
        }
      ]
    }
  },
  methods: {
    handleChange(value) {
      console.log(value)
    }
  }
}
</script>

使用第三方城市数据

可以使用现成的城市数据包,如 china-location 或 province-city-china。安装后直接导入数据使用。

npm install province-city-china
import { province, city, area } from 'province-city-china'

export default {
  data() {
    return {
      provinces: province,
      cities: city,
      areas: area
    }
  }
}

自定义城市选择组件

可以创建自定义的城市选择组件,通过三级联动实现省市区选择。

<template>
  <div>
    <select v-model="selectedProvince" @change="loadCities">
      <option v-for="province in provinces" :value="province.code">{{ province.name }}</option>
    </select>

    <select v-model="selectedCity" @change="loadAreas">
      <option v-for="city in cities" :value="city.code">{{ city.name }}</option>
    </select>

    <select v-model="selectedArea">
      <option v-for="area in areas" :value="area.code">{{ area.name }}</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedProvince: '',
      selectedCity: '',
      selectedArea: '',
      provinces: [],
      cities: [],
      areas: []
    }
  },
  methods: {
    loadCities() {
      // 根据省份加载城市
    },
    loadAreas() {
      // 根据城市加载区县
    }
  }
}
</script>

使用高德地图 API

高德地图提供了城市选择 API,可以实现更丰富的地图选择功能。

<template>
  <div id="container"></div>
</template>

<script>
export default {
  mounted() {
    AMap.plugin('AMap.DistrictSearch', () => {
      const districtSearch = new AMap.DistrictSearch({
        extensions: 'all',
        subdistrict: 1
      })

      districtSearch.search('中国', (status, result) => {
        console.log(result.districtList[0].districtList)
      })
    })
  }
}
</script>

实现搜索功能

为城市选择器添加搜索功能,提升用户体验。

vue实现城市

<template>
  <el-autocomplete
    v-model="searchText"
    :fetch-suggestions="querySearch"
    placeholder="请输入城市名称"
    @select="handleSelect"
  ></el-autocomplete>
</template>

<script>
export default {
  data() {
    return {
      searchText: '',
      cities: []
    }
  },
  methods: {
    querySearch(queryString, cb) {
      const results = this.cities.filter(city => 
        city.name.includes(queryString)
      )
      cb(results)
    },
    handleSelect(item) {
      console.log(item)
    }
  }
}
</script>

标签: 城市vue
分享给朋友:

相关文章

vue实现轮询

vue实现轮询

实现轮询的基本方法 在Vue中实现轮询可以通过setInterval或setTimeout配合递归调用完成。轮询通常用于定期向服务器请求数据更新。 使用setInterval的简单示例: data…

eventbus vue实现

eventbus vue实现

EventBus 实现原理 EventBus 是一种发布/订阅模式,用于 Vue 组件间的通信。核心是通过一个中央事件总线管理事件监听和触发。 创建 EventBus 在 Vue 项目中创建一个独立…

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue能实现

vue能实现

Vue.js 是一个流行的前端框架,能够实现多种功能。以下是 Vue 能够实现的主要功能和特性: 响应式数据绑定 Vue 的核心特性之一是响应式数据绑定。通过数据驱动视图,当数据发生变化时,视图会自…

vue 实现报价

vue 实现报价

Vue 实现报价功能 在 Vue 中实现报价功能通常涉及前端表单交互、数据计算和与后端 API 的通信。以下是实现报价功能的几种常见方法: 表单设计与数据绑定 使用 Vue 的 v-model 指…

vue实现uuid

vue实现uuid

使用 uuid 库生成 UUID 在 Vue 项目中,可以使用 uuid 库来生成 UUID。安装依赖: npm install uuid 在 Vue 组件中使用: import { v4 as…