自定义导航栏的使用
方法1:
- 在main.js中全局注册一个通用的自定义导航栏组件
- App.vue中通过手机设备,获取不同的导航栏尺寸
- 在需要自定义导航的页面中使用cu-custom组件
- 关闭默认的导航栏
方法2:
- 使用ColorUI的操作条,直接作为导航栏使用
城市定位功能
- 申请高德的web服务API的key
- 使用uni.getLocation获取当前用户位置经纬度
- 使用高德的api接口,逆地理编码获取位置信息
API接口地址 - 核心代码
uni.getLocation({success: ({longitude,latitude}) => { //获取用户经纬度console.log(longitude,latitude);uni.request({ //请求高德服务API,通过经纬度获取位置信息url:`https://restapi.amap.com/v3/geocode/regeo?key=自己的key&location=${longitude},${latitude}`,method:'GET',success: (res) => {console.log(res);let {district} = res.data.regeocode.addressComponentthis.district = district}})}})
地址列表索引
- 列表组件引用
- 列表组件数据渲染
vuex状态机的引入
在状态机中维护定位信息
使用步骤,跟vue中一样,但是不需要安装
详情页渲染
- map组件的使用
- 根据两组经纬度计算距离
注意保证当前用户定位正确获取后再测距
function (lat1, lng1, lat2, lng2) {var radLat1 = lat1 * Math.PI / 180.0;var radLat2 = lat2 * Math.PI / 180.0;var a = radLat1 - radLat2;var b = lng1 * Math.PI / 180.0 - lng2 * Math.PI / 180.0;var s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2)));s = s * 6378.137;s = Math.round(s * 10000) / 10000;return s};
