@toolkit-fe/get-location
Version:
获取当前位置
55 lines (54 loc) • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
// tMap.js
var qq = window.qq;
var geolocation = null;
if (qq && qq.maps) {
// 初始化定位组件
geolocation = new qq.maps.Geolocation('QVLBZ-YUULR-OUMW7-WKXFD-4SUWS-UDBIA', 'mymap');
}
var TMap = /** @class */ (function () {
function TMap() {
// 获取定位计数器 用于定位失败时累计次数 超过3次后不再继续,抛出定位失败错误
this.getPositionCount = 0;
}
// 对外暴露的获取位置接口
TMap.prototype.getLocation = function () {
var _this = this;
return new Promise(function (resolve, reject) {
// 定位成功回调
_this.getTMapLocation(resolve, reject);
});
};
// 调用腾讯地图获取位置
TMap.prototype.getTMapLocation = function (success, fail) {
var _this = this;
var _self = this;
// 定位成功回调
var showPosition = function (position) {
localStorage.setItem('positionData', JSON.stringify(position));
success(position);
};
// 定位失败回调
var showErr = function () {
// 如果获取定位失败超过3次 抛出错误 否则继续获取定位信息
if (_this.getPositionCount > 3) {
fail('超过3次 获取定位失败');
}
else {
// 定位失败递归
_self.getPositionCount = _self.getPositionCount + 1;
_self.getTMapLocation(success, fail);
}
};
// 调用腾讯web定位组件获取位置信息
if (geolocation) {
geolocation.getIpLocation(showPosition, showErr, {
timeout: 6000, // 定位超时时长 单位ms
failTipFlag: true
});
}
};
return TMap;
}());
exports.default = new TMap();