From aead19424872ee852192a221ff2ad5b8a2b1d03f Mon Sep 17 00:00:00 2001 From: huajimang <782841784@qq.com> Date: Thu, 20 Oct 2022 16:58:52 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 70 ++-- app.json | 19 +- package.json | 4 +- pages/index/index.js | 18 +- pages/map/map.js | 138 +++++++ pages/map/map.json | 5 + pages/map/map.wxml | 53 +++ pages/map/map.wxss | 91 +++++ project.config.json | 4 +- utils/qqmap-wx-jssdk.js | 741 ++++++++++++++++++++++++++++++++++++ utils/qqmap-wx-jssdk.min.js | 3 + 11 files changed, 1096 insertions(+), 50 deletions(-) create mode 100644 pages/map/map.js create mode 100644 pages/map/map.json create mode 100644 pages/map/map.wxml create mode 100644 pages/map/map.wxss create mode 100644 utils/qqmap-wx-jssdk.js create mode 100644 utils/qqmap-wx-jssdk.min.js diff --git a/app.js b/app.js index 8caea0b..1413cdd 100644 --- a/app.js +++ b/app.js @@ -10,43 +10,43 @@ App({ wx.login({ success: res => { console.log(res); - wx.request({ - url: 'https://www.umayle.com/weixin_api/API/Wx/User/GetUserInfo.ashx?appName=Inland&code='+res.code, - method: 'POST', - success:(_res)=>{ - console.log(_res); - let openId = _res.data.openid; - this.globalData.openId = openId - console.log('openid',openId); - wx.request({ - url: 'https://www.umayle.com/inland/Api/GetUserInfo.ashx?openId='+openId, - method: 'POST', - success:(_res_)=>{ - console.log(_res_,',,,res'); - this.globalData.userInfo = _res_.data.data - if(_res_.data.code == 0 && _res_.data.message == '获取成功'){ - //跳转到列表页面 - setTimeout(() => { - wx.redirectTo({ - url:'/pages/list/list' - // url:'/pages/register/register' - }) - }, 2000); + // wx.request({ + // url: 'https://www.umayle.com/weixin_api/API/Wx/User/GetUserInfo.ashx?appName=Inland&code='+res.code, + // method: 'POST', + // success:(_res)=>{ + // console.log(_res); + // let openId = _res.data.openid; + // this.globalData.openId = openId + // console.log('openid',openId); + // wx.request({ + // url: 'https://www.umayle.com/inland/Api/GetUserInfo.ashx?openId='+openId, + // method: 'POST', + // success:(_res_)=>{ + // console.log(_res_,',,,res'); + // this.globalData.userInfo = _res_.data.data + // if(_res_.data.code == 0 && _res_.data.message == '获取成功'){ + // //跳转到列表页面 + // setTimeout(() => { + // wx.redirectTo({ + // url:'/pages/map/map' + // // url:'/pages/register/register' + // }) + // }, 2000); - }else{ - //跳转到注册页面 - setTimeout(() => { - wx.redirectTo({ - url:'/pages/register/register' - // url:'/pages/list/list' - }) - }, 2000); + // }else{ + // //跳转到注册页面 + // setTimeout(() => { + // wx.redirectTo({ + // url:'/pages/register/register' + // // url:'/pages/list/list' + // }) + // }, 2000); - } - } - }) - } - }) + // } + // } + // }) + // } + // }) // 发送 res.code 到后台换取 openId, sessionKey, unionId } }) diff --git a/app.json b/app.json index 355083e..814947d 100644 --- a/app.json +++ b/app.json @@ -1,9 +1,27 @@ { "pages": [ + "pages/map/map", "pages/start/start", "pages/index/index", "pages/list/list" + ], + "plugins": { + "routePlan": { + "version": "1.0.5", + "provider": "wx50b5593e81dd937a" + }, + "chooseLocation": { + "version": "1.0.3", + "provider": "wx76a9a06e5b4e693e" + } + }, + "permission": { + "scope.userLocation": { + "desc": "你的位置信息将用于小程序位置接口的效果展示" + } + }, + "requiredPrivateInfos": ["getLocation"], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#3669f8", @@ -12,5 +30,4 @@ }, "sitemapLocation": "sitemap.json", "lazyCodeLoading": "requiredComponents" - } \ No newline at end of file diff --git a/package.json b/package.json index 723ee5c..c41326e 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "inlandvessel-app", + "name": "bridgespace-app", "version": "1.0.0", "main": "app.js", "dependencies": { @@ -16,7 +16,7 @@ }, "repository": { "type": "git", - "url": "http://git.umayle.com:2022/lgzn/inlandVessel-app.git" + "url": "https://git.lgzn.space/chengdandan/bridgeSpace.git" }, "author": "", "license": "ISC", diff --git a/pages/index/index.js b/pages/index/index.js index dea4f14..d5d00de 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -22,16 +22,14 @@ Page({ }, onLoad(options) { if (wx.getUserProfile) { - //https://download-1300932214.cos.ap-nanjing.myqcloud.com/inlandVessel/dist/index.html - //let url = 'https://download-1300932214.cos.ap-nanjing.myqcloud.com/inlandVessel/dist/index.html?openId='+options.openId+'&page='+options.page; - let url = 'https://www.umayle.com/inland/dist/index.html?openId='+options.openId+'&page='+options.page; - console.log(url); - this.setData({ - openId: options.openId, - page: options.page, - url: url, - canIUseGetUserProfile: true - }) + // let url = 'https://www.umayle.com/inland/dist/index.html?openId='+options.openId+'&page='+options.page; + // console.log(url); + // this.setData({ + // openId: options.openId, + // page: options.page, + // url: url, + // canIUseGetUserProfile: true + // }) } }, getUserProfile(e) { diff --git a/pages/map/map.js b/pages/map/map.js new file mode 100644 index 0000000..417933f --- /dev/null +++ b/pages/map/map.js @@ -0,0 +1,138 @@ +// pages/map.js +var QQMapWX = require('../../utils/qqmap-wx-jssdk.js'); +var qqmapsdk = new QQMapWX({ + key: 'QLPBZ-QODCX-7KB46-TQERC-T36BT-IIBJO' // 必填 +}); +Page({ + + /** + * 页面的初始数据 + */ + data: { + inputVal:'', + latitude: 31.22786, + longitude: 121.46658, + suggestion:[], + district:{} + }, + // 选择位置 + handlePos(val){ + console.log(val,'asdas'); + var _this = this; + //调用关键词提示接口 + qqmapsdk.getSuggestion({ + //获取输入框值并设置keyword参数 + keyword: val.detail.value, //用户输入的关键词,可设置固定值,如keyword:'KFC' + //region:'北京', //设置城市名,限制关键词所示的地域范围,非必填参数 + success: function(res) {//搜索成功后的回调 + console.log(res); + var sug = []; + for (var i = 0; i < res.data.length; i++) { + sug.push({ // 获取返回结果,放到sug数组中 + title: res.data[i].title, + id: res.data[i].id, + addr: res.data[i].address, + city: res.data[i].city, + district: res.data[i].district, + latitude: res.data[i].location.lat, + longitude: res.data[i].location.lng + }); + } + _this.setData({ //设置suggestion属性,将关键词搜索结果以列表形式展示 + suggestion: sug + }); + }, + fail: function(error) { + console.error(error); + }, + complete: function(res) { + console.log(res); + } + }); + }, + + /** + * 生命周期函数--监听页面加载 + */ + onLoad(options) { + var that = this + wx.getLocation({ + type: 'wgs84', + altitude: false, + success: (result) => { + // that.getOnlineDistrict(result.latitude, result.longitude) + var obj = { + latitude:result.latitude,longitude:result.longitude + } + this.setData({ + district:obj + }) + console.log(this.district,obj,'district'); + }, + }); + + }, + getOnlineDistrict(latitude, longitude) { + var that = this; + //通过这个方法来实现经纬度反推省市区 + qqmapsdk.reverseGeocoder({ + location: { + latitude: latitude, + longitude: longitude + }, + success: function (res) { + that.setData({ + district:res.result.address_component.city + }) + console.log(this.district,'asda'); + } + }) + }, + /** + * 生命周期函数--监听页面初次渲染完成 + */ + onReady() { + }, + + /** + * 生命周期函数--监听页面显示 + */ + onShow() { + + }, + + /** + * 生命周期函数--监听页面隐藏 + */ + onHide() { + + }, + + /** + * 生命周期函数--监听页面卸载 + */ + onUnload() { + + }, + + /** + * 页面相关事件处理函数--监听用户下拉动作 + */ + onPullDownRefresh() { + + }, + + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom() { + + }, + + /** + * 用户点击右上角分享 + */ + onShareAppMessage() { + + } +}) \ No newline at end of file diff --git a/pages/map/map.json b/pages/map/map.json new file mode 100644 index 0000000..2e99b44 --- /dev/null +++ b/pages/map/map.json @@ -0,0 +1,5 @@ +{ + "usingComponents": { + "van-icon":"../../miniprogram_npm/vant-weapp/icon/index" + } +} \ No newline at end of file diff --git a/pages/map/map.wxml b/pages/map/map.wxml new file mode 100644 index 0000000..42db13d --- /dev/null +++ b/pages/map/map.wxml @@ -0,0 +1,53 @@ + + + + + + + + + + + + {{item.title}} + + {{item.addr}} + + + + + + + + + + + + + + 董滨枢纽小桥 + + 详情 + + + + + (14+9*20)+(20+2*30+20)+(6*20+14) + + + g15 + kd+212 + 预制空心板 + + + + + 最近一天桥梁结构监测统计信息:过车总量12542; 49吨以上车辆总数289; + 100吨以上车辆总数214;车辆效应与设计值最大比值24/100;监测预警数量12条; + 最大预警级别:红色预警。 + + + diff --git a/pages/map/map.wxss b/pages/map/map.wxss new file mode 100644 index 0000000..fa0399d --- /dev/null +++ b/pages/map/map.wxss @@ -0,0 +1,91 @@ +/* pages/map.wxss */ +.mapContent{ + width: 100%; + height: 100%; + display: flex; + flex-flow: row wrap; + justify-content: center; +} +.mapContent .mapTop{ + width: 100%; + height: 900rpx; + display: flex; + flex-flow: column nowrap; +} +.inputVal{ + width: 100%; + height: 100rpx; + background-color: rgb(54, 105, 248); + display: flex; + flex-flow: row nowrap; + align-items: center; + justify-content: center; +} +.weui-input{ + width: 450rpx; + height: 60rpx; + border-radius: 40rpx; + background-color: rgb(156, 133, 252); + padding-left: 40rpx; + color: #ffffff; + font-size: 14px; + box-sizing: border-box; +} +.phcolor{ + color: #ffffff; + font-size: 14px; + letter-spacing: 1rpx; + text-align: center; +} +.mapContent .info{ + width: 100%; + height: calc(100% - 900rpx); + padding: 20rpx 15rpx; + box-sizing: border-box; +} +.mapContent .info .top{ + width: 100%; + height: 170rpx; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; +} +.mapContent .info .top .image{ + width: 260rpx; + height: 100%; + background-color: blue; +} +.mapContent .info .top .image image{ + width: 100%; + height: 100%; +} +.mapContent .info .top .title{ + flex: 1; + height: 100%; + padding-left: 10rpx; + box-sizing: border-box; +} +.mapContent .info .top .title .text{ + width: 100%; + height: 20px; + display: flex; + flex-flow: row nowrap; + justify-content: space-between; + align-items: center; +} +.mapContent .info .top .title .bottom{ + display: flex; + flex-flow: row nowrap; +} +.mapContent .info .top .title .bottom .btn{ + display: inline-block; + color: rgb(156, 133, 252); + margin-right: 10rpx; + font-size: 13px; + text-align: center; + border: 1px solid rgb(156, 133, 252); + border-radius: 10rpx; + height: 40rpx; + line-height: 40rpx; + /* width: calc(fit-content + 10rpx) ; */ +} \ No newline at end of file diff --git a/project.config.json b/project.config.json index 107e097..3593f17 100644 --- a/project.config.json +++ b/project.config.json @@ -55,8 +55,8 @@ }, "compileType": "miniprogram", "libVersion": "2.19.4", - "appid": "wxbc46632cc8f89fbb", - "projectname": "inlandVessel-app", + "appid": "wxa9783cf92ee95a72", + "projectname": "bridgespace-app", "condition": {}, "editorSetting": { "tabIndent": "insertSpaces", diff --git a/utils/qqmap-wx-jssdk.js b/utils/qqmap-wx-jssdk.js new file mode 100644 index 0000000..b114e29 --- /dev/null +++ b/utils/qqmap-wx-jssdk.js @@ -0,0 +1,741 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.1 + * @date 2019-01-20 + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature === 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature === 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature === 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature === 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature === 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature === 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature === 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/utils/qqmap-wx-jssdk.min.js b/utils/qqmap-wx-jssdk.min.js new file mode 100644 index 0000000..b8fbad4 --- /dev/null +++ b/utils/qqmap-wx-jssdk.min.js @@ -0,0 +1,3 @@ +var ERROR_CONF={KEY_ERR:311,KEY_ERR_MSG:'key格式错误',PARAM_ERR:310,PARAM_ERR_MSG:'请求参数信息有误',SYSTEM_ERR:600,SYSTEM_ERR_MSG:'系统错误',WX_ERR_CODE:1000,WX_OK_CODE:200};var BASE_URL='https://apis.map.qq.com/ws/';var URL_SEARCH=BASE_URL+'place/v1/search';var URL_SUGGESTION=BASE_URL+'place/v1/suggestion';var URL_GET_GEOCODER=BASE_URL+'geocoder/v1/';var URL_CITY_LIST=BASE_URL+'district/v1/list';var URL_AREA_LIST=BASE_URL+'district/v1/getchildren';var URL_DISTANCE=BASE_URL+'distance/v1/';var EARTH_RADIUS=6378136.49;var Utils={location2query(data){if(typeof data=='string'){return data}var query='';for(var i=0;i Date: Thu, 20 Oct 2022 17:51:09 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.js | 27 --------------------------- app.json | 11 ----------- pages/index/index.js | 14 -------------- pages/list/list.js | 14 +++++++------- pages/map/images/icon1.png | Bin 0 -> 3241 bytes pages/map/images/qiao.png | Bin 0 -> 28678 bytes pages/map/map.js | 15 +++++++++++---- pages/map/map.wxml | 32 ++++++++++++++++++-------------- pages/map/map.wxss | 8 ++++++++ project.config.json | 4 ---- 10 files changed, 44 insertions(+), 81 deletions(-) create mode 100644 pages/map/images/icon1.png create mode 100644 pages/map/images/qiao.png diff --git a/app.js b/app.js index c413b36..1413cdd 100644 --- a/app.js +++ b/app.js @@ -10,7 +10,6 @@ App({ wx.login({ success: res => { console.log(res); -<<<<<<< HEAD // wx.request({ // url: 'https://www.umayle.com/weixin_api/API/Wx/User/GetUserInfo.ashx?appName=Inland&code='+res.code, // method: 'POST', @@ -33,32 +32,6 @@ App({ // // url:'/pages/register/register' // }) // }, 2000); -======= - wx.request({ - // url: 'https://www.umayle.com/weixin_api/API/Wx/User/GetUserInfo.ashx?appName=Inland&code='+res.code, - url: ''+res.code, - method: 'POST', - success:(_res)=>{ - console.log(_res); - let openId = _res.data.openid; - this.globalData.openId = openId - console.log('openid',openId); - wx.request({ - // url: 'https://www.umayle.com/inland/Api/GetUserInfo.ashx?openId='+openId, - url: ''+openId, - method: 'POST', - success:(_res_)=>{ - console.log(_res_,',,,res'); - this.globalData.userInfo = _res_.data.data - if(_res_.data.code == 0 && _res_.data.message == '获取成功'){ - //跳转到列表页面 - setTimeout(() => { - wx.redirectTo({ - url:'/pages/list/list' - // url:'/pages/register/register' - }) - }, 2000); ->>>>>>> cdc45140f836a5564ba6d4f94c3e4d7e23d3df72 // }else{ // //跳转到注册页面 diff --git a/app.json b/app.json index 02e178d..f07d9ae 100644 --- a/app.json +++ b/app.json @@ -1,21 +1,10 @@ { "pages": [ -<<<<<<< HEAD "pages/map/map", - "pages/start/start", - "pages/index/index", - "pages/list/list" - -======= "pages/list/list", "pages/item/item", "pages/start/start", "pages/index/index" - - - - ->>>>>>> cdc45140f836a5564ba6d4f94c3e4d7e23d3df72 ], "plugins": { "routePlan": { diff --git a/pages/index/index.js b/pages/index/index.js index e597af8..d5d00de 100644 --- a/pages/index/index.js +++ b/pages/index/index.js @@ -22,7 +22,6 @@ Page({ }, onLoad(options) { if (wx.getUserProfile) { -<<<<<<< HEAD // let url = 'https://www.umayle.com/inland/dist/index.html?openId='+options.openId+'&page='+options.page; // console.log(url); // this.setData({ @@ -31,19 +30,6 @@ Page({ // url: url, // canIUseGetUserProfile: true // }) -======= - //https://download-1300932214.cos.ap-nanjing.myqcloud.com/inlandVessel/dist/index.html - //let url = 'https://download-1300932214.cos.ap-nanjing.myqcloud.com/inlandVessel/dist/index.html?openId='+options.openId+'&page='+options.page; - // let url = 'https://www.umayle.com/inland/dist/index.html?openId='+options.openId+'&page='+options.page; - let url = ''+options.openId+'&page='+options.page; - console.log(url); - this.setData({ - openId: options.openId, - page: options.page, - url: url, - canIUseGetUserProfile: true - }) ->>>>>>> cdc45140f836a5564ba6d4f94c3e4d7e23d3df72 } }, getUserProfile(e) { diff --git a/pages/list/list.js b/pages/list/list.js index 2dff754..146e5af 100644 --- a/pages/list/list.js +++ b/pages/list/list.js @@ -30,13 +30,13 @@ Page({ page: a, }) }, - // changeNext:function () { - // setTimeout(() => { - // wx.redirectTo({ - // url:'/pages/item/item' - // }) - // }, 2000); - // }, + changeNext:function () { + setTimeout(() => { + wx.redirectTo({ + url:'/pages/item/item' + }) + }, 2000); + }, onLoad: function (options) { // options 为 board页传来的参数 const _this = this; // 拼接请求url diff --git a/pages/map/images/icon1.png b/pages/map/images/icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..4ef36283cb21ae1a20c55ad29c55b96792bdd1cb GIT binary patch literal 3241 zcmaJ^3pkT)AD=nP2s!4kri8MYQ?^iS6Xg_g3YnRa&1T!%999t~ITn?(P;^izF^58dW;Ri|$4arZccqJit1L9Ebo)8*t37Kwcg@8kYEFqqzj)smD z6h0)>E}DvWi*|CyMTg-KL6BWmV2enkK!Aj&W5JOmVmJ*MX$kqJixl+NUc(^ZZxDKz zCFGx^yc}J?C^8ifHieoQ;NT{v;2j7k+|1Ynf!GcyHWCZ?x zK?KpLLBU8@wC(p;f{`U8gifa*VK4@R0c99N$y5RijzAz_hDID#>CXf{0A3J#{EIUhtq#>gMM)_zvZskfkY8RM&qfWNAN+m zR5A(tZQ97t-{)fUTfOhxpx@_$`YjhGNCvjHxc^%0AFl)sTI>F_u3+%f{P=Kz`^ps(}zp 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 literal 0 HcmV?d00001 diff --git a/pages/map/map.js b/pages/map/map.js index 417933f..9fc4bdd 100644 --- a/pages/map/map.js +++ b/pages/map/map.js @@ -50,7 +50,14 @@ Page({ } }); }, - + // 跳转列表 + handleRouter(){ + console.log('aaaa'); + wx.redirectTo({ + url:'/pages/list/list' + }) + + }, /** * 生命周期函数--监听页面加载 */ @@ -60,7 +67,7 @@ Page({ type: 'wgs84', altitude: false, success: (result) => { - // that.getOnlineDistrict(result.latitude, result.longitude) + that.getOnlineDistrict(result.latitude, result.longitude) var obj = { latitude:result.latitude,longitude:result.longitude } @@ -82,9 +89,9 @@ Page({ }, success: function (res) { that.setData({ - district:res.result.address_component.city + // district:res.result.address_component.city }) - console.log(this.district,'asda'); + console.log(res,'asda'); } }) }, diff --git a/pages/map/map.wxml b/pages/map/map.wxml index 42db13d..03a21f2 100644 --- a/pages/map/map.wxml +++ b/pages/map/map.wxml @@ -3,18 +3,8 @@ - - - - - - - {{item.title}} - - {{item.addr}} - - - + + - + 董滨枢纽小桥 - + 详情 @@ -50,4 +40,18 @@ 最大预警级别:红色预警。 + + + + + + + + + + {{item.title}} + + {{item.addr}} + + diff --git a/pages/map/map.wxss b/pages/map/map.wxss index fa0399d..91c614b 100644 --- a/pages/map/map.wxss +++ b/pages/map/map.wxss @@ -88,4 +88,12 @@ height: 40rpx; line-height: 40rpx; /* width: calc(fit-content + 10rpx) ; */ +} +.listPos{ + width: 100%; + height: auto; + position: fixed; + top: 100rpx; + left: 0; + background-color: #ffffff; } \ No newline at end of file diff --git a/project.config.json b/project.config.json index c529eb8..3593f17 100644 --- a/project.config.json +++ b/project.config.json @@ -56,11 +56,7 @@ "compileType": "miniprogram", "libVersion": "2.19.4", "appid": "wxa9783cf92ee95a72", -<<<<<<< HEAD "projectname": "bridgespace-app", -======= - "projectname": "inlandVessel-app", ->>>>>>> cdc45140f836a5564ba6d4f94c3e4d7e23d3df72 "condition": {}, "editorSetting": { "tabIndent": "insertSpaces",