|
|
var _createClass=function(){function a(e,c){for(var b=0;b<c.length;b++){var d=c[b];d.enumerable=d.enumerable||false;d.configurable=true;if("value" in d){d.writable=true}Object.defineProperty(e,d.key,d)}}return function(d,b,c){if(b){a(d.prototype,b)}if(c){a(d,c)}return d}}();function _classCallCheck(a,b){if(!(a instanceof b)){throw new TypeError("Cannot call a class as a function")}}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 Utils={location2query:function location2query(c){if(typeof c=="string"){return c}var b="";for(var a=0;a<c.length;a++){var e=c[a];if(!!b){b+=";"}if(e.location){b=b+e.location.lat+","+e.location.lng}if(e.latitude&&e.longitude){b=b+e.latitude+","+e.longitude}}return b},getWXLocation:function getWXLocation(c,b,a){wx.getLocation({type:"gcj02",success:c,fail:b,complete:a})},getLocationParam:function getLocationParam(b){if(typeof b=="string"){var a=b.split(",");if(a.length===2){b={latitude:b.split(",")[0],longitude:b.split(",")[1]}}else{b={}}}return b},polyfillParam:function polyfillParam(a){a.success=a.success||function(){};a.fail=a.fail||function(){};a.complete=a.complete||function(){}},checkParamKeyEmpty:function checkParamKeyEmpty(c,b){if(!c[b]){var a=this.buildErrorConfig(ERROR_CONF.PARAM_ERR,ERROR_CONF.PARAM_ERR_MSG+b+"参数格式有误");c.fail(a);c.complete(a);return true}return false},checkKeyword:function checkKeyword(a){return !this.checkParamKeyEmpty(a,"keyword")},checkLocation:function checkLocation(c){var a=this.getLocationParam(c.location);if(!a||!a.latitude||!a.longitude){var b=this.buildErrorConfig(ERROR_CONF.PARAM_ERR,ERROR_CONF.PARAM_ERR_MSG+" location参数格式有误");c.fail(b);c.complete(b);return false}return true},buildErrorConfig:function buildErrorConfig(a,b){return{status:a,message:b}},buildWxRequestConfig:function buildWxRequestConfig(c,a){var b=this;a.header={"content-type":"application/json"};a.method="GET";a.success=function(d){var e=d.data;if(e.status===0){c.success(e)}else{c.fail(e)}};a.fail=function(d){d.statusCode=ERROR_CONF.WX_ERR_CODE;c.fail(b.buildErrorConfig(ERROR_CONF.WX_ERR_CODE,result.errMsg))};a.complete=function(d){var e=+d.statusCode;switch(e){case ERROR_CONF.WX_ERR_CODE:c.complete(b.buildErrorConfig(ERROR_CONF.WX_ERR_CODE,d.errMsg));break;case ERROR_CONF.WX_OK_CODE:var f=d.data;if(f.status===0){c.complete(f)}else{c.complete(b.buildErrorConfig(f.status,f.message))}break;default:c.complete(b.buildErrorConfig(ERROR_CONF.SYSTEM_ERR,ERROR_CONF.SYSTEM_ERR_MSG))}};return a},locationProcess:function locationProcess(f,e,c,a){var d=this;c=c||function(g){g.statusCode=ERROR_CONF.WX_ERR_CODE;f.fail(d.buildErrorConfig(ERROR_CONF.WX_ERR_CODE,g.errMsg))};a=a||function(g){if(g.statusCode==ERROR_CONF.WX_ERR_CODE){f.complete(d.buildErrorConfig(ERROR_CONF.WX_ERR_CODE,g.errMsg))}};if(!f.location){d.getWXLocation(e,c,a)}else{if(d.checkLocation(f)){var b=Utils.getLocationParam(f.location);e(b)}}}};var QQMapWX=function(){function b(i){_classCallCheck(this,b);if(!i.key){throw Error("key值不能为空")}this.key=i.key}_createClass(b,[{key:"search",value:function f(i){var l=this;i=i||{};Utils.polyfillParam(i);if(!Utils.checkKeyword(i)){return}var k={keyword:i.keyword,orderby:i.orderby||"_distance",page_size:i.page_size||10,page_index:i.page_index||1,output:"json",key:l.key};if(i.address_format){k.address_format=i.address_format}if(i.filter){k.filter=i.filter}var n=i.distance||"1000";var j=i.auto_extend||1;var m=function m(o){k.boundary="nearby("+o.latitude+","+o.longitude+","+n+","+j+")";wx.request(Utils.buildWxRequestConfig(i,{url:URL_SEARCH,data:k}))};Utils.locationProcess(i,m)}},{key:"getSuggestion",value:function h(i){var k=this;i=i||{};Utils.polyfillParam(i);if(!Utils.checkKeyword(i)){return}var j={keyword:i.keyword,region:i.region||"全国",region_fix:i.region_fix||0,policy:i.policy||0,output:"json",key:k.key};wx.request(Utils.buildWxRequestConfig(i,{url:URL_SUGGESTION,data:j}))}},{key:"reverseGeocoder",value:function a(i){var k=this;i=i||{};Utils.polyfillParam(i);var j={coord_type:i.coord_type||5,get_poi:i.get_poi||0,output:"json",key:k.key};if(i.poi_options){j.poi_options=i.poi_options}var l=function l(m){j.location=m.latitude+","+m.longitude;wx.request(Utils.buildWxRequestConfig(i,{url:URL_GET_GEOCODER,data:j}))};Utils.locationProcess(i,l)}},{key:"geocoder",value:function g(i){var k=this;i=i||{};Utils.polyfillParam(i);if(Utils.checkParamKeyEmpty(i,"address")){return}var j={address:i.address,output:"json",key:k.key};wx.request(Utils.buildWxRequestConfig(i,{url:URL_GET_GEOCODER,data:j}))}},{key:"getCityList",value:function c(i){var k=this;i=i||{};Utils.polyfillParam(i);var j={output:"json",key:k.key};
|
|
|
wx.request(Utils.buildWxRequestConfig(i,{url:URL_CITY_LIST,data:j}))}},{key:"getDistrictByCityId",value:function d(i){var k=this;i=i||{};Utils.polyfillParam(i);if(Utils.checkParamKeyEmpty(i,"id")){return}var j={id:i.id||"",output:"json",key:k.key};wx.request(Utils.buildWxRequestConfig(i,{url:URL_AREA_LIST,data:j}))}},{key:"calculateDistance",value:function e(i){var k=this;i=i||{};Utils.polyfillParam(i);if(Utils.checkParamKeyEmpty(i,"to")){return}var j={mode:i.mode||"walking",to:Utils.location2query(i.to),output:"json",key:k.key};var l=function l(m){j.from=m.latitude+","+m.longitude;wx.request(Utils.buildWxRequestConfig(i,{url:URL_DISTANCE,data:j}))};if(i.from){i.location=i.from}Utils.locationProcess(i,l)}}]);return b}();module.exports=QQMapWX; |
|
|
\ No newline at end of file |
|
|
var _createClass = function() {
|
|
|
function a(e, c) {
|
|
|
for (var b = 0; b < c.length; b++) {
|
|
|
var d = c[b];
|
|
|
d.enumerable = d.enumerable || false;
|
|
|
d.configurable = true;
|
|
|
if ("value" in d) {
|
|
|
d.writable = true
|
|
|
}
|
|
|
Object.defineProperty(e, d.key, d)
|
|
|
}
|
|
|
}
|
|
|
return function(d, b, c) {
|
|
|
if (b) {
|
|
|
a(d.prototype, b)
|
|
|
}
|
|
|
if (c) {
|
|
|
a(d, c)
|
|
|
}
|
|
|
return d
|
|
|
}
|
|
|
}();
|
|
|
|
|
|
function _classCallCheck(a, b) {
|
|
|
if (!(a instanceof b)) {
|
|
|
throw new TypeError("Cannot call a class as a function")
|
|
|
}
|
|
|
}
|
|
|
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 Utils = {
|
|
|
location2query: function location2query(c) {
|
|
|
if (typeof c == "string") {
|
|
|
return c
|
|
|
}
|
|
|
var b = "";
|
|
|
for (var a = 0; a < c.length; a++) {
|
|
|
var e = c[a];
|
|
|
if (!!b) {
|
|
|
b += ";"
|
|
|
}
|
|
|
if (e.location) {
|
|
|
b = b + e.location.lat + "," + e.location.lng
|
|
|
}
|
|
|
if (e.latitude && e.longitude) {
|
|
|
b = b + e.latitude + "," + e.longitude
|
|
|
}
|
|
|
}
|
|
|
return b
|
|
|
},
|
|
|
getWXLocation: function getWXLocation(c, b, a) {
|
|
|
wx.getLocation({
|
|
|
type: "gcj02",
|
|
|
success: c,
|
|
|
fail: b,
|
|
|
complete: a
|
|
|
})
|
|
|
},
|
|
|
getLocationParam: function getLocationParam(b) {
|
|
|
if (typeof b == "string") {
|
|
|
var a = b.split(",");
|
|
|
if (a.length === 2) {
|
|
|
b = {
|
|
|
latitude: b.split(",")[0],
|
|
|
longitude: b.split(",")[1]
|
|
|
}
|
|
|
} else {
|
|
|
b = {}
|
|
|
}
|
|
|
}
|
|
|
return b
|
|
|
},
|
|
|
polyfillParam: function polyfillParam(a) {
|
|
|
a.success = a.success || function() {};
|
|
|
a.fail = a.fail || function() {};
|
|
|
a.complete = a.complete || function() {}
|
|
|
},
|
|
|
checkParamKeyEmpty: function checkParamKeyEmpty(c, b) {
|
|
|
if (!c[b]) {
|
|
|
var a = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + b + "参数格式有误");
|
|
|
c.fail(a);
|
|
|
c.complete(a);
|
|
|
return true
|
|
|
}
|
|
|
return false
|
|
|
},
|
|
|
checkKeyword: function checkKeyword(a) {
|
|
|
return !this.checkParamKeyEmpty(a, "keyword")
|
|
|
},
|
|
|
checkLocation: function checkLocation(c) {
|
|
|
var a = this.getLocationParam(c.location);
|
|
|
if (!a || !a.latitude || !a.longitude) {
|
|
|
var b = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + " location参数格式有误");
|
|
|
c.fail(b);
|
|
|
c.complete(b);
|
|
|
return false
|
|
|
}
|
|
|
return true
|
|
|
},
|
|
|
buildErrorConfig: function buildErrorConfig(a, b) {
|
|
|
return {
|
|
|
status: a,
|
|
|
message: b
|
|
|
}
|
|
|
},
|
|
|
buildWxRequestConfig: function buildWxRequestConfig(c, a) {
|
|
|
var b = this;
|
|
|
a.header = {
|
|
|
"content-type": "application/json"
|
|
|
};
|
|
|
a.method = "GET";
|
|
|
a.success = function(d) {
|
|
|
var e = d.data;
|
|
|
if (e.status === 0) {
|
|
|
c.success(e)
|
|
|
} else {
|
|
|
c.fail(e)
|
|
|
}
|
|
|
};
|
|
|
a.fail = function(d) {
|
|
|
d.statusCode = ERROR_CONF.WX_ERR_CODE;
|
|
|
c.fail(b.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, result.errMsg))
|
|
|
};
|
|
|
a.complete = function(d) {
|
|
|
var e = +d.statusCode;
|
|
|
switch (e) {
|
|
|
case ERROR_CONF.WX_ERR_CODE:
|
|
|
c.complete(b.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, d.errMsg));
|
|
|
break;
|
|
|
case ERROR_CONF.WX_OK_CODE:
|
|
|
var f = d.data;
|
|
|
if (f.status === 0) {
|
|
|
c.complete(f)
|
|
|
} else {
|
|
|
c.complete(b.buildErrorConfig(f.status, f.message))
|
|
|
}
|
|
|
break;
|
|
|
default:
|
|
|
c.complete(b.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG))
|
|
|
}
|
|
|
};
|
|
|
return a
|
|
|
},
|
|
|
locationProcess: function locationProcess(f, e, c, a) {
|
|
|
var d = this;
|
|
|
c = c || function(g) {
|
|
|
g.statusCode = ERROR_CONF.WX_ERR_CODE;
|
|
|
f.fail(d.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, g.errMsg))
|
|
|
};
|
|
|
a = a || function(g) {
|
|
|
if (g.statusCode == ERROR_CONF.WX_ERR_CODE) {
|
|
|
f.complete(d.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, g.errMsg))
|
|
|
}
|
|
|
};
|
|
|
if (!f.location) {
|
|
|
d.getWXLocation(e, c, a)
|
|
|
} else {
|
|
|
if (d.checkLocation(f)) {
|
|
|
var b = Utils.getLocationParam(f.location);
|
|
|
e(b)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
var QQMapWX = function() {
|
|
|
function b(i) {
|
|
|
_classCallCheck(this, b);
|
|
|
if (!i.key) {
|
|
|
throw Error("key值不能为空")
|
|
|
}
|
|
|
this.key = i.key
|
|
|
}
|
|
|
_createClass(b, [{
|
|
|
key: "search",
|
|
|
value: function f(i) {
|
|
|
var l = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
if (!Utils.checkKeyword(i)) {
|
|
|
return
|
|
|
}
|
|
|
var k = {
|
|
|
keyword: i.keyword,
|
|
|
orderby: i.orderby || "_distance",
|
|
|
page_size: i.page_size || 10,
|
|
|
page_index: i.page_index || 1,
|
|
|
output: "json",
|
|
|
key: l.key
|
|
|
};
|
|
|
if (i.address_format) {
|
|
|
k.address_format = i.address_format
|
|
|
}
|
|
|
if (i.filter) {
|
|
|
k.filter = i.filter
|
|
|
}
|
|
|
var n = i.distance || "1000";
|
|
|
var j = i.auto_extend || 1;
|
|
|
var m = function m(o) {
|
|
|
k.boundary = "nearby(" + o.latitude + "," + o.longitude + "," + n + "," + j + ")";
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_SEARCH,
|
|
|
data: k
|
|
|
}))
|
|
|
};
|
|
|
Utils.locationProcess(i, m)
|
|
|
}
|
|
|
}, {
|
|
|
key: "getSuggestion",
|
|
|
value: function h(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
if (!Utils.checkKeyword(i)) {
|
|
|
return
|
|
|
}
|
|
|
var j = {
|
|
|
keyword: i.keyword,
|
|
|
region: i.region || "全国",
|
|
|
region_fix: i.region_fix || 0,
|
|
|
policy: i.policy || 0,
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_SUGGESTION,
|
|
|
data: j
|
|
|
}))
|
|
|
}
|
|
|
}, {
|
|
|
key: "reverseGeocoder",
|
|
|
value: function a(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
var j = {
|
|
|
coord_type: i.coord_type || 5,
|
|
|
get_poi: i.get_poi || 0,
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
if (i.poi_options) {
|
|
|
j.poi_options = i.poi_options
|
|
|
}
|
|
|
var l = function l(m) {
|
|
|
j.location = m.latitude + "," + m.longitude;
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_GET_GEOCODER,
|
|
|
data: j
|
|
|
}))
|
|
|
};
|
|
|
Utils.locationProcess(i, l)
|
|
|
}
|
|
|
}, {
|
|
|
key: "geocoder",
|
|
|
value: function g(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
if (Utils.checkParamKeyEmpty(i, "address")) {
|
|
|
return
|
|
|
}
|
|
|
var j = {
|
|
|
address: i.address,
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_GET_GEOCODER,
|
|
|
data: j
|
|
|
}))
|
|
|
}
|
|
|
}, {
|
|
|
key: "getCityList",
|
|
|
value: function c(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
var j = {
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_CITY_LIST,
|
|
|
data: j
|
|
|
}))
|
|
|
}
|
|
|
}, {
|
|
|
key: "getDistrictByCityId",
|
|
|
value: function d(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
if (Utils.checkParamKeyEmpty(i, "id")) {
|
|
|
return
|
|
|
}
|
|
|
var j = {
|
|
|
id: i.id || "",
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_AREA_LIST,
|
|
|
data: j
|
|
|
}))
|
|
|
}
|
|
|
}, {
|
|
|
key: "calculateDistance",
|
|
|
value: function e(i) {
|
|
|
var k = this;
|
|
|
i = i || {};
|
|
|
Utils.polyfillParam(i);
|
|
|
if (Utils.checkParamKeyEmpty(i, "to")) {
|
|
|
return
|
|
|
}
|
|
|
var j = {
|
|
|
mode: i.mode || "walking",
|
|
|
to: Utils.location2query(i.to),
|
|
|
output: "json",
|
|
|
key: k.key
|
|
|
};
|
|
|
var l = function l(m) {
|
|
|
j.from = m.latitude + "," + m.longitude;
|
|
|
wx.request(Utils.buildWxRequestConfig(i, {
|
|
|
url: URL_DISTANCE,
|
|
|
data: j
|
|
|
}))
|
|
|
};
|
|
|
if (i.from) {
|
|
|
i.location = i.from
|
|
|
}
|
|
|
Utils.locationProcess(i, l)
|
|
|
}
|
|
|
}]);
|
|
|
return b
|
|
|
}();
|
|
|
module.exports = QQMapWX; |
|
|
\ No newline at end of file |
...
|
...
|
|