You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

8 lines
6.6 KiB

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;