最新文章
微信小程序中使用腾讯城市选择器组件完全指南
发布时间:2025-12-19
热度:
在微信小程序开发中,地址选择是常见的需求场景,无论是电商应用的收货地址,还是出行服务的出发地选择。今天我将详细介绍如何在小程序中集成腾讯城市选择器组件,帮助你快速实现专业级的城市选择功能。
https://apis.map.qq.com
# 在项目根目录执行 npm install --save miniprogram-citypicker
citypicker
{
"usingComponents": {
"city-picker": "miniprogram-citypicker"
}
}<view class="container">
<!-- 显示选中的城市 -->
<view class="selected-city" bindtap="showCityPicker">
当前选择:{{selectedCity.province}} - {{selectedCity.city}} - {{selectedCity.district}}
</view>
<!-- 城市选择器组件 -->
<city-picker
id="cityPicker"
bindchange="onCityChange"
theme="light"
show-hot-city="{{true}}"
/>
</view>Page({
data: {
selectedCity: {
province: '北京市',
city: '北京市',
district: '朝阳区'
}
},
// 显示城市选择器
showCityPicker() {
const cityPicker = this.selectComponent('#cityPicker')
cityPicker.show()
},
// 城市选择变化回调
onCityChange(e) {
const { province, city, district } = e.detail
this.setData({
selectedCity: { province, city, district }
})
// 可以在这里处理选择后的逻辑,如保存到后台等
console.log('选择的城市:', province, city, district)
}
}).container {
padding: 20rpx;
}
.selected-city {
padding: 30rpx;
background-color: #f5f5f5;
border-radius: 12rpx;
text-align: center;
margin-top: 40rpx;
color: #333;
font-size: 32rpx;
}<city-picker
id="cityPicker"
bindchange="onCityChange"
bindcancel="onCityCancel"
theme="dark" <!-- light/dark 主题 -->
show-hot-city="{{true}}" <!-- 是否显示热门城市 -->
hot-city-list="{{hotCities}}" <!-- 自定义热门城市 -->
default-city="{{defaultCity}}" <!-- 默认选中城市 -->
custom-header="{{false}}" <!-- 是否自定义头部 -->
show-header="{{true}}" <!-- 是否显示头部 -->
header-height="80" <!-- 头部高度 -->
animation="{{true}}" <!-- 是否开启动画 -->
/>Page({
data: {
hotCities: [
{ province: '北京市', city: '北京市', district: '' },
{ province: '上海市', city: '上海市', district: '' },
{ province: '广东省', city: '广州市', district: '' },
{ province: '广东省', city: '深圳市', district: '' },
{ province: '浙江省', city: '杭州市', district: '' },
{ province: '四川省', city: '成都市', district: '' }
],
defaultCity: {
province: '广东省',
city: '深圳市',
district: '南山区'
}
}
})/* 页面样式文件 */
.custom-city-picker .city-picker-header {
background-color: #007aff !important;
}
.custom-city-picker .city-picker-tab-item.active {
color: #007aff !important;
}<!-- WXML中使用 --> <city-picker class="custom-city-picker" ... />
Page({
data: {
addressInfo: {
name: '',
phone: '',
province: '',
city: '',
district: '',
detail: ''
}
},
// 选择城市
selectCity() {
this.selectComponent('#cityPicker').show()
},
onCityChange(e) {
const { province, city, district } = e.detail
this.setData({
'addressInfo.province': province,
'addressInfo.city': city,
'addressInfo.district': district
})
},
// 保存地址
saveAddress() {
const { addressInfo } = this.data
// 验证数据完整性
if (!addressInfo.province || !addressInfo.city || !addressInfo.district) {
wx.showToast({
title: '请选择完整的地址',
icon: 'none'
})
return
}
// 调用API保存地址
wx.request({
url: 'https://your-api.com/address/save',
method: 'POST',
data: addressInfo,
success: (res) => {
wx.showToast({
title: '保存成功'
})
}
})
}
})Page({
data: {
tripInfo: {
startCity: { province: '北京市', city: '北京市', district: '' },
endCity: { province: '上海市', city: '上海市', district: '' },
currentSelectType: 'start' // 'start' 或 'end'
}
},
// 选择出发城市
selectStartCity() {
this.setData({ currentSelectType: 'start' })
this.selectComponent('#cityPicker').show()
},
// 选择目的城市
selectEndCity() {
this.setData({ currentSelectType: 'end' })
this.selectComponent('#cityPicker').show()
},
onCityChange(e) {
const { province, city, district } = e.detail
const { currentSelectType } = this.data
const cityKey = currentSelectType === 'start' ? 'startCity' : 'endCity'
this.setData({
[`tripInfo.${cityKey}`]: { province, city, district }
})
}
})
// 创建一个城市选择器管理类
class CityPickerManager {
constructor() {
this.instance = null
}
getInstance(page) {
if (!this.instance) {
this.instance = page.selectComponent('#cityPicker')
}
return this.instance
}
show() {
if (this.instance) {
this.instance.show()
}
}
}
// 在app.js中全局注册
App({
cityPickerManager: new CityPickerManager()
})
腾讯城市选择器组件为微信小程序提供了稳定、高效的城市选择解决方案。通过本文的介绍,你应该已经掌握了从基础使用到高级定制的完整知识。在实际开发中,可以根据具体业务需求灵活配置组件,结合腾讯位置服务的其他功能(如逆地址解析、路线规划等),打造更完善的地址相关功能。
如果你在集成过程中遇到任何问题,建议查阅官方文档或在GitHub上查看组件的最新更新。












冀公网安备