省市区三级联动(新)
来源:互联网 发布:阿里云挂载数据盘设置 编辑:程序博客网 时间:2024/05/17 21:36
http://www.cnblogs.com/xjwy/p/6861197.html
之前写了一篇关于省市区三级联动的博文,但是当时用的是本地文件的城市名称数据,所以处理起来很麻烦,最近用了腾讯地图api提供省市区的名称数据,感觉简单多了,所以在此和大家分享一下:
效果图如下:(由于当时功能的需要,我只是写了省市,区的话可以根据数据来操作)
首先看看目录结构
先看cascade.wxml的代码:
<template name="cascade"> <view class="cascade_box" animation="{{animationData}}"> <view class="cascade_hei" catchtap="quxiao"></view> <view class="cascade_find"> <view class="cascade_header"> <text class='quxiao' catchtap="cancel">取消</text> <text class="queren" catchtap="confirm">确认</text> </view> <picker-view indicator-style="height: 80rpx;" style="width: 100%; height: 400rpx;" bindchange="citychange"> <picker-view-column> <view wx:for="{{sheng}}" wx:key='this' style="line-height: 80rpx;text-align:center;">{{item.fullname}}</view> </picker-view-column> <picker-view-column> <view wx:for="{{shi}}" wx:key='this' style="line-height: 80rpx;text-align:center;">{{item.fullname}}</view> </picker-view-column> <!--<picker-view-column><!--这里是区的显示,由于没有用到我就注释了--> <view wx:for="{{qu}}" wx:key='this' style="line-height: 80rpx;text-align:center;">{{item}}</view> </picker-view-column>--> </picker-view> </view></view></template>
然后是cascade.wxss的代码:
.cascade_box{ font-size:28rpx; width: 100%; height:0; position: fixed; bottom: 0; left: 0; z-index: 99;}.cascade_hei{ width: 100%; height:55%; background: #000; opacity: 0.5;}.cascade_find{ width: 100%; height: 45%; position: relative; background: #fff;}.quxiao,.queren{ display: block; position: absolute; width: 100rpx; height: 80rpx; line-height: 80rpx; /*background: #00f;*/ text-align: center; /*color: #16346a;*/ color: #a2a2a2;}.queren{ right: 0; top: 0; color: #0f0;}.cascade_header{ height: 80rpx; width: 100%; margin-bottom: 20rpx;}
然后就是在你要用的地方引用模板:
<!--这里的路径依你的文件路径为准--><view class='find_box' catchtap="city"> <text class='find_title'>家乡</text> <image class='jinru' src="https://wxxdachu.duapp.com/img/jinru.png"></image> <text class="diqu">{{diqu.sheng}}-{{diqu.shi}}</text></view><import src="../../template/cascade/cascade.wxml"/><template is="cascade" data="{{animationData:animationData,sheng:sheng,shi:shi}}"/>
相应的wxss中引用:
/*这里的路径依你的文件路径为准*/@import '../../template/cascade/cascade.wxss';.find_box{border-bottom: 1rpx solid #ddd;width: 100%;height: 100rpx;}.jinru{width:20rpx;height: 35rpx;float: right;margin: 35rpx 30rpx 0 20rpx;}.find_title{display: block;float: left;line-height: 100rpx;height: 100rpx;}.diqu{display: block;height: 100rpx;line-height: 100rpx;float: right;color: #a2a2a2;}
现在开始就是JS了:
var QQMapWX = require('../../libs/qqmap-wx-jssdk.min.js');//引用下载的sdk文件var qqmapsdk;//定义一个变量var app=getApp();Page({ data:{ sheng: [], shi: [], sheng_index:0, shi_index:0, jieguo:{}, animationData:{}, win_height:0, win_width:0, province:[], cityname:[] },//点击家乡触发按钮city:function(){ console.log('这里是地区按钮');//这里是动画 var animation = wx.createAnimation({ duration: 500, timingFunction: 'ease', }) this.animation = animation animation.height(this.data.win_height).step() this.setData({ animationData:animation.export() }) if(this.data.cityname&&this.data.cityname.length>0){ this.jilian(); } }, //点击取消触发 cancel:function(){ var animation = wx.createAnimation({ duration: 500, timingFunction: 'ease', }) this.animation = animation animation.height(0+'rpx').step() this.setData({ animationData:animation.export() }); this.setData({ jieguo:{} }); console.log(this.data.jieguo); },//点击确认触发 confirm:function(){ var animation = wx.createAnimation({ duration: 500, timingFunction: 'ease', }) this.animation = animation animation.height(0+'rpx').step() this.setData({ animationData:animation.export() }); console.log(this.data.jieguo); this.setData({ diqu:this.data.jieguo }); console.log(this.data.diqu); console.log(this.data.diqu.sheng); }, //当地区滚动的时候触发 citychange: function(e) { var val = e.detail.value this.setData({ sheng_index: val[0], shi_index: val[1] }) console.log(val); console.log(this.data.cityname&&this.data.cityname.length>0); if(this.data.cityname&&this.data.cityname.length>0){ console.log('这里运行级联'); this.jilian(); } },//这里获取省市的相应名称数据 jilian:function(){ var that=this, prov_index=that.data.sheng_index, city_index=that.data.shi_index, prov=that.data.province, city=that.data.cityname, cityarr=[]; cityarr=city.slice(prov[prov_index].cidx[0],prov[prov_index].cidx[1]+1); that.setData({ sheng:prov, shi:cityarr }); if(cityarr[city_index]){ that.setData({ jieguo:{sheng:prov[prov_index].fullname,shi:cityarr[city_index].fullname} }); } },onLoad:function(options){ var that=this; if(options.id){ that.setData({ modify:true }); } qqmapsdk = new QQMapWX({ key: '你申请的key值' });//这里面的key是你自己申请腾讯地图的key的值 qqmapsdk.getCityList({//获取所有省市区 success:function(res){ // console.log(res.result[0]);//获取所有省 // console.log(res.result[1].slice(res.result[0][22].cidx[0],res.result[0][22].cidx[1]+1));//该省的所有市 // console.log(res.result[2].slice(res.result[1][res.result[0][22].cidx[0]].cidx[0],res.result[1][res.result[0][22].cidx[0]].cidx[1]+1));//该市的所有区县 that.setData({ province:res.result[0], cityname:res.result[1] }); },complete:function(res){ console.log(res); that.jilian(); } }); }, onReady:function(){ // 页面渲染完成 }, onShow:function(){ // 页面显示 }, onHide:function(){ // 页面隐藏 }, onUnload:function(){ // 页面关闭 }})
总体就是这样,申请腾讯地图的key和下载sdk还有一些api的使用介绍 http://lbs.qq.com/qqmap_wx_jssdk/index.html 这里都有详细的说明,想了解更多的小程序的知识请添加微信小程序开发交流群:368506119
转载请注明出处和作者,谢谢
阅读全文
0 0
- 省市区三级联动(新)
- 三级联动(省市区)
- 省市区三级联动(模板)
- 省市区三级联动菜单(附数据库)
- 省市区三级联动菜单(附数据库)
- 省市区三级联动菜单(附数据库)
- 省市区三级联动菜单(附数据库)
- 省市区三级联动菜单(附数据库)
- js 省市区三级(二级)联动
- 省市区三级联动菜单(附数据库)
- 省市区-三级联动(json数据模拟)
- js省市区三级联动
- 省市区三级联动
- 省市区三级联动
- 省市区三级异步联动
- PHP、省市区三级联动
- js省市区三级联动
- XML省市区三级联动
- 经典算法-打印杨辉三角形
- celery confirm 机制
- Spark入门(六):共享变量(累加器和广播变量)
- redis cluster 模式如何批量删除指定前缀的key
- 模拟实现单元测试中的异步测试
- 省市区三级联动(新)
- UVA 514 铁轨 (Rails)
- div+css之让ul及li水平居中于div
- CentOS7.3 安装Docker
- window.location.hash 使用说明
- Result Maps collection already contains value for “XXX”问题解决
- Qt 多线程操作
- Spark性能相关参数配置
- C++源文件不同后缀(.cc .cpp .C .cp)的区别