| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452 | 
							- /**
 
-  * @file 微信小程序JSAPI
 
-  * @author 崔健 cuijian03@baidu.com 2017.01.10
 
-  * @update 邓淑芳 623996689@qq.com 2019.07.03
 
-  */
 
- /**
 
-  * 百度地图微信小程序API类
 
-  *
 
-  * @class
 
-  */
 
- class BMapWX {
 
-     /**
 
-      * 百度地图微信小程序API类
 
-      *
 
-      * @constructor
 
-      */
 
-     constructor(param) {
 
-       this.ak = param["ak"];
 
-     }
 
-   
 
-     /**
 
-      * 使用微信接口进行定位
 
-      *
 
-      * @param {string} type 坐标类型
 
-      * @param {Function} success 成功执行
 
-      * @param {Function} fail 失败执行
 
-      * @param {Function} complete 完成后执行
 
-      */
 
-     getWXLocation(type, success, fail, complete) {
 
-       type = type || 'gcj02',
 
-       success = success || function () { };
 
-       fail = fail || function () { };
 
-       complete = complete || function () { };
 
-       wx.getLocation({
 
-         type: type,
 
-         success: success,
 
-         fail: fail,
 
-         complete: complete
 
-       });
 
-     }
 
-   
 
-     /**
 
-      * POI周边检索
 
-      *
 
-      * @param {Object} param 检索配置
 
-      * 参数对象结构可以参考
 
-      * http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-placeapi
 
-      */
 
-     search(param) {
 
-       var that = this;
 
-       param = param || {};
 
-       let searchparam = {
 
-         query: param["query"] || '生活服务$美食&酒店',
 
-         scope: param["scope"] || 1,
 
-         filter: param["filter"] || '',
 
-         coord_type: param["coord_type"] || 2,
 
-         page_size: param["page_size"] || 10,
 
-         page_num: param["page_num"] || 0,
 
-         output: param["output"] || 'json',
 
-         ak: that.ak,
 
-         sn: param["sn"] || '',
 
-         timestamp: param["timestamp"] || '',
 
-         radius: param["radius"] || 2000,
 
-         ret_coordtype: 'gcj02ll'
 
-       };
 
-       let otherparam = {
 
-         iconPath: param["iconPath"],
 
-         iconTapPath: param["iconTapPath"],
 
-         width: param["width"],
 
-         height: param["height"],
 
-         alpha: param["alpha"] || 1,
 
-         success: param["success"] || function () { },
 
-         fail: param["fail"] || function () { }
 
-       };
 
-       let type = 'gcj02';
 
-       let locationsuccess = function (result) {
 
-         searchparam["location"] = result["latitude"] + ',' + result["longitude"];
 
-         wx.request({
 
-           url: 'https://api.map.baidu.com/place/v2/search',
 
-           data: searchparam,
 
-           header: {
 
-             "content-type": "application/json"
 
-           },
 
-           method: 'GET',
 
-           success(data) {
 
-             let res = data["data"];
 
-             if (res["status"] === 0) {
 
-               let poiArr = res["results"];
 
-               // outputRes 包含两个对象,
 
-               // originalData为百度接口返回的原始数据
 
-               // wxMarkerData为小程序规范的marker格式
 
-               let outputRes = {};
 
-               outputRes["originalData"] = res;
 
-               outputRes["wxMarkerData"] = [];
 
-               for (let i = 0; i < poiArr.length; i++) {
 
-                 outputRes["wxMarkerData"][i] = {
 
-                   id: i,
 
-                   latitude: poiArr[i]["location"]["lat"],
 
-                   longitude: poiArr[i]["location"]["lng"],
 
-                   title: poiArr[i]["name"],
 
-                   iconPath: otherparam["iconPath"],
 
-                   iconTapPath: otherparam["iconTapPath"],
 
-                   address: poiArr[i]["address"],
 
-                   telephone: poiArr[i]["telephone"],
 
-                   alpha: otherparam["alpha"],
 
-                   width: otherparam["width"],
 
-                   height: otherparam["height"]
 
-                 }
 
-               }
 
-               otherparam.success(outputRes);
 
-             } else {
 
-               otherparam.fail({
 
-                 errMsg: res["message"],
 
-                 statusCode: res["status"]
 
-               });
 
-             }
 
-           },
 
-           fail(data) {
 
-             otherparam.fail(data);
 
-           }
 
-         });
 
-       }
 
-       let locationfail = function (result) {
 
-         otherparam.fail(result);
 
-       };
 
-       let locationcomplete = function (result) {
 
-       };
 
-       if (!param["location"]) {
 
-         that.getWXLocation(type, locationsuccess, locationfail, locationcomplete);
 
-       } else {
 
-         let longitude = param.location.split(',')[1];
 
-         let latitude = param.location.split(',')[0];
 
-         let errMsg = 'input location';
 
-         let res = {
 
-           errMsg: errMsg,
 
-           latitude: latitude,
 
-           longitude: longitude
 
-         };
 
-         locationsuccess(res);
 
-       }
 
-     }
 
-   
 
-     /**
 
-      * sug模糊检索
 
-      *
 
-      * @param {Object} param 检索配置
 
-      * 参数对象结构可以参考
 
-      * http://lbsyun.baidu.com/index.php?title=webapi/place-suggestion-api
 
-      */
 
-     suggestion(param) {
 
-       var that = this;
 
-       param = param || {};
 
-       let suggestionparam = {
 
-         query: param["query"] || '',
 
-         region: param["region"] || '全国',
 
-         city_limit: param["city_limit"] || false,
 
-         output: param["output"] || 'json',
 
-         ak: that.ak,
 
-         sn: param["sn"] || '',
 
-         timestamp: param["timestamp"] || '',
 
-         ret_coordtype: 'gcj02ll'
 
-       };
 
-       let otherparam = {
 
-         success: param["success"] || function () { },
 
-         fail: param["fail"] || function () { }
 
-       };
 
-       wx.request({
 
-         url: 'https://api.map.baidu.com/place/v2/suggestion',
 
-         data: suggestionparam,
 
-         header: {
 
-           "content-type": "application/json"
 
-         },
 
-         method: 'GET',
 
-         success(data) {
 
-           let res = data["data"];
 
-           if (res["status"] === 0) {
 
-             otherparam.success(res);
 
-           } else {
 
-             otherparam.fail({
 
-               errMsg: res["message"],
 
-               statusCode: res["status"]
 
-             });
 
-           }
 
-         },
 
-         fail(data) {
 
-           otherparam.fail(data);
 
-         }
 
-       });
 
-     }
 
-   
 
-     /**
 
-      * rgc检索(逆地理编码:经纬度->地点描述)
 
-      * 
 
-      * @param {Object} param 检索配置
 
-      * 参数对象结构可以参考
 
-      * https://lbs.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
 
-      * 
 
-      */
 
-     regeocoding (param) {
 
-       var that = this;
 
-       param = param || {};
 
-       let regeocodingparam = {
 
-         coordtype: param["coordtype"] || 'gcj02ll',         
 
-         ret_coordtype: 'gcj02ll',                          
 
-         radius: param["radius"] || 1000,                    
 
-         ak: that.ak,                                        
 
-         sn: param["sn"] || '',                              
 
-         output: param["output"] || 'json',                 
 
-         callback: param["callback"] || function () { },     
 
-         extensions_poi: param["extensions_poi"] || 1,      
 
-         extensions_road: param["extensions_road"] || false, 
 
-         extensions_town: param["extensions_town"] || false, 
 
-         language: param["language"] || 'zh-CN',             
 
-         language_auto: param["language_auto"] || 0        
 
-       };
 
-       let otherparam = {
 
-         iconPath: param["iconPath"],
 
-         iconTapPath: param["iconTapPath"],
 
-         width: param["width"],
 
-         height: param["height"],
 
-         alpha: param["alpha"] || 1, 
 
-         success: param["success"] || function () { },
 
-         fail: param["fail"] || function () { }
 
-       };
 
-       let type = 'gcj02';
 
-       let locationsuccess = function (result) {
 
-         regeocodingparam["location"] = result["latitude"] + ',' + result["longitude"];
 
-         wx.request({
 
-           url: 'https://api.map.baidu.com/reverse_geocoding/v3',
 
-           data: regeocodingparam,
 
-           header: {
 
-             "content-type": "application/json"
 
-           },
 
-           method: 'GET',
 
-           success(data) {
 
-             let res = data["data"];
 
-             if (res["status"] === 0) {
 
-               let poiObj = res["result"];
 
-               // outputRes 包含两个对象:
 
-               // originalData为百度接口返回的原始数据
 
-               // wxMarkerData为小程序规范的marker格式
 
-               let outputRes = {};
 
-               outputRes["originalData"] = res;
 
-               outputRes["wxMarkerData"] = [];
 
-               outputRes["wxMarkerData"][0] = {
 
-                 id: 0,
 
-                 latitude: result["latitude"],
 
-                 longitude: result["longitude"],
 
-                 address: poiObj["formatted_address"],
 
-                 iconPath: otherparam["iconPath"],
 
-                 iconTapPath: otherparam["iconTapPath"],
 
-                 desc: poiObj["sematic_description"],
 
-                 business: poiObj["business"],
 
-                 alpha: otherparam["alpha"],
 
-                 width: otherparam["width"],
 
-                 height: otherparam["height"]
 
-               }
 
-               otherparam.success(outputRes);
 
-             } else {
 
-               otherparam.fail({
 
-                 errMsg: res["message"],
 
-                 statusCode: res["status"]
 
-               });
 
-             }
 
-           },
 
-           fail(data) {
 
-             otherparam.fail(data);
 
-           }
 
-         });
 
-       };
 
-       let locationfail = function (result) {
 
-         otherparam.fail(result);
 
-       }
 
-       let locationcomplete = function (result) {
 
-       };
 
-       if (!param["location"]) {
 
-         that.getWXLocation(type, locationsuccess, locationfail, locationcomplete);
 
-       } else {
 
-         let longitude = param.location.split(',')[1];
 
-         let latitude = param.location.split(',')[0];
 
-         let errMsg = 'input location';
 
-         let res = {
 
-           errMsg: errMsg,
 
-           latitude: latitude,
 
-           longitude: longitude
 
-         };
 
-         locationsuccess(res);
 
-       }
 
-     }
 
-   
 
-     /**
 
-      * gc检索(地理编码:地点->经纬度)
 
-      *
 
-      * @param {Object} param 检索配置
 
-      * 参数对象结构可以参考
 
-      * https://lbs.baidu.com/index.php?title=webapi/guide/webservice-geocoding
 
-      * 
 
-      */
 
-     geocoding(param) {
 
-       var that = this;
 
-       param = param || {};
 
-       let geocodingparam = {
 
-         address: param["address"] || '',                    
 
-         city: param["city"] || '',                          
 
-         ret_coordtype: param["coordtype"] || 'gcj02ll',     
 
-         ak: that.ak,                                        
 
-         sn: param["sn"] || '',                              
 
-         output: param["output"] || 'json',                  
 
-         callback: param["callback"] || function () { }
 
-       };
 
-       let otherparam = {
 
-         iconPath: param["iconPath"],
 
-         iconTapPath: param["iconTapPath"],
 
-         width: param["width"],
 
-         height: param["height"],
 
-         alpha: param["alpha"] || 1, 
 
-         success: param["success"] || function () { },
 
-         fail: param["fail"] || function () { }
 
-       };
 
-       if (param["address"]) {
 
-         wx.request({
 
-           url: 'https://api.map.baidu.com/geocoding/v3',
 
-           data: geocodingparam,
 
-           header: {
 
-             "content-type": "application/json"
 
-           },
 
-           method: 'GET',
 
-           success(data) {
 
-             let res = data["data"];
 
-             if (res["status"] === 0){
 
-               let poiObj = res["result"];
 
-               // outputRes 包含两个对象:
 
-               // originalData为百度接口返回的原始数据
 
-               // wxMarkerData为小程序规范的marker格式
 
-               let outputRes = res;
 
-               outputRes["originalData"] = res;
 
-               outputRes["wxMarkerData"] = [];
 
-               outputRes["wxMarkerData"][0] = {
 
-                 id: 0,
 
-                 latitude: poiObj["location"]["lat"],
 
-                 longitude: poiObj["location"]["lng"],
 
-                 iconPath: otherparam["iconPath"],
 
-                 iconTapPath: otherparam["iconTapPath"],
 
-                 alpha: otherparam["alpha"],
 
-                 width: otherparam["width"],
 
-                 height: otherparam["height"]
 
-               }
 
-               otherparam.success(outputRes);
 
-             } else {
 
-               otherparam.fail({
 
-                 errMsg: res["message"],
 
-                 statusCode: res["status"]
 
-               });
 
-             }
 
-           },
 
-           fail(data) {
 
-             otherparam.fail(data);
 
-           }
 
-         });
 
-       } else {
 
-         let errMsg = 'input address!';
 
-         let res = {
 
-           errMsg: errMsg
 
-         };
 
-         otherparam.fail(res);
 
-       }
 
-     } 
 
-   
 
-     /**
 
-      * 天气检索
 
-      *
 
-      * @param {Object} param 检索配置
 
-      */
 
-     weather(param) {
 
-       var that = this;
 
-       param = param || {};
 
-       let weatherparam = {
 
-         coord_type: param["coord_type"] || 'gcj02',
 
-         output: param["output"] || 'json',
 
-         ak: that.ak,
 
-         sn: param["sn"] || '',
 
-         timestamp: param["timestamp"] || ''
 
-       };
 
-       let otherparam = {
 
-         success: param["success"] || function () { },
 
-         fail: param["fail"] || function () { }
 
-       };
 
-       let type = 'gcj02';
 
-       let locationsuccess = function (result) {
 
-         weatherparam["location"] = result["longitude"] + ',' + result["latitude"];
 
-         wx.request({
 
-           url: 'https://api.map.baidu.com/telematics/v3/weather',
 
-           data: weatherparam,
 
-           header: {
 
-             "content-type": "application/json"
 
-           },
 
-           method: 'GET',
 
-           success(data) {
 
-             let res = data["data"];
 
-             if (res["error"] === 0 && res["status"] === 'success') {
 
-               let weatherArr = res["results"];
 
-               // outputRes 包含两个对象,
 
-               // originalData为百度接口返回的原始数据
 
-               // wxMarkerData为小程序规范的marker格式
 
-               let outputRes = {};
 
-               outputRes["originalData"] = res;
 
-               outputRes["currentWeather"] = [];
 
-               outputRes["currentWeather"][0] = {
 
-                 currentCity: weatherArr[0]["currentCity"],
 
-                 pm25: weatherArr[0]["pm25"],
 
-                 date: weatherArr[0]["weather_data"][0]["date"],
 
-                 temperature: weatherArr[0]["weather_data"][0]["temperature"],
 
-                 weatherDesc: weatherArr[0]["weather_data"][0]["weather"],
 
-                 wind: weatherArr[0]["weather_data"][0]["wind"]
 
-               };
 
-               otherparam.success(outputRes);
 
-             } else {
 
-               otherparam.fail({
 
-                 errMsg: res["message"],
 
-                 statusCode: res["status"]
 
-               });
 
-             }
 
-           },
 
-           fail(data) {
 
-             otherparam.fail(data);
 
-           }
 
-         });
 
-       }
 
-       let locationfail = function (result) {
 
-         otherparam.fail(result);
 
-       }
 
-       let locationcomplete = function (result) {
 
-       }
 
-       if (!param["location"]) {
 
-         that.getWXLocation(type, locationsuccess, locationfail, locationcomplete);
 
-       } else {
 
-         let longitude = param.location.split(',')[0];
 
-         let latitude = param.location.split(',')[1];
 
-         let errMsg = 'input location';
 
-         let res = {
 
-           errMsg: errMsg,
 
-           latitude: latitude,
 
-           longitude: longitude
 
-         };
 
-         locationsuccess(res);
 
-       }
 
-     }
 
-   }
 
-   
 
-   module.exports.BMapWX = BMapWX;
 
 
  |