| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- import Vue from "vue";
- import { getTicket } from "@/api/index";
- import { toastLoading } from "@/utils/commonVant";
- import { CJ02BD, gcj02BD } from "@/utils/index";
- import { jsonp } from "vue-jsonp";
- // 微信JSSDK实例
- const wx = Vue.prototype.wx;
- // 腾讯位置服务 key
- const TxMapKey = "WLCBZ-HRM6L-YOMPV-ME62B-AQOG6-JUBW6";
- /**
- * 获取当前定位 调用之前确保当前页面已经授权(getTicketFun)
- * */
- export function getPosition() {
- return new Promise((resolve, reject) => {
- toastLoading(0, "定位中...", true);
- // 本地开发 test 环境时跳过获取定位功能 模拟定位
- if (process.env.NODE_ENV === "test") {
- let resData = {
- latitude: 34.615684509277344,
- longitude: 112.4474105834961,
- };
- localStorage.setItem("lat", resData.latitude);
- localStorage.setItem("lon", resData.longitude);
- // 定位坐标转换 腾讯转百度
- let TXisBD = CJ02BD(resData.latitude, resData.longitude);
- toastLoading().clear();
- resolve({ TXisBD, resData });
- } else {
- // let url = window.location.href;
- // // 获取签名
- // getTicket({ url: url }).then((response) => {
- // console.log(response);
- // toastLoading().clear();
- // if (response.code == 200) {
- // let qiyeData = response.data;
- // wx.config({
- // beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
- // debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- // appId: qiyeData.appId, // 必填,企业微信的corpID
- // timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
- // nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
- // signature: qiyeData.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
- // jsApiList: ["ready", "getLocation"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
- // });
- wx.ready(() => {
- wx.getLocation({
- type: "gcj02",
- success: (resData) => {
- toastLoading().clear();
- console.log("处理前");
- console.log(resData.latitude, resData.longitude);
- // 定位坐标转换 腾讯转百度
- let TXisBD = CJ02BD(resData.latitude, resData.longitude);
- console.log("处理后");
- console.log(TXisBD);
- localStorage.setItem("lat", resData.latitude);
- localStorage.setItem("lon", resData.longitude);
- resolve({ TXisBD, resData });
- },
- fail: () => {
- toastLoading().clear();
- reject("GPS未开启");
- },
- });
- });
- wx.error((err) => {
- toastLoading().clear();
- console.log(err);
- reject("定位失败,请开启企微定位权限");
- });
- // } else {
- // toastLoading().clear();
- // reject("获取签名失败");
- // }
- // });
- }
- });
- }
- /**
- *当前页面授权 一个url只需要授权一次
- */
- export function getTicketFun() {
- return new Promise((resolve, reject) => {
- // 当前页面
- let url = window.location.href;
- // 获取签名
- getTicket({ url: url }).then((response) => {
- console.log(response);
- toastLoading().clear();
- if (response.code == 200) {
- let qiyeData = response.data;
- wx.config({
- beta: true, // 必须这么写,否则wx.invoke调用形式的jsapi会有问题
- debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
- appId: qiyeData.appId, // 必填,企业微信的corpID
- timestamp: qiyeData.timestamp, // 必填,生成签名的时间戳
- nonceStr: qiyeData.nonceStr, // 必填,生成签名的随机串
- signature: qiyeData.signature, // 必填,签名,见 附录-JS-SDK使用权限签名算法
- jsApiList: ["ready", "getLocation"], // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来
- });
- resolve("获取签名成功");
- } else {
- reject("获取签名失败");
- }
- });
- });
- }
- /**
- * 地点搜索 获取500米范围poi点
- * @param {*object} location //当前位置
- * @param {*number} radius //搜索半径
- * @param {*number} auto_extend //是否自动扩大范围 0 不扩大
- * @returns
- */
- export function getMapPoi(location, radius = 500, auto_extend = 0) {
- return new Promise((resolve, reject) => {
- let api =
- "https://apis.map.qq.com/ws/place/v1/search?page_size=10&page_index=1&orderby=_distance&output=jsonp";
- let boundary = `&boundary=nearby(${location.latitude},${location.longitude},${radius},${auto_extend})`;
- let key = `&key=${TxMapKey}`;
- jsonp(api + boundary + key)
- .then((res) => {
- console.log(res);
- resolve(res);
- })
- .catch((err) => {
- console.log(err);
- reject(err);
- });
- });
- }
- /**
- * 关键词搜索 在当前城市范围内搜索
- * @param {*object} location //当前位置
- * @param {*string} keywordValue //关键字
- * @param {*number} radius //搜索半径
- * @param {*number} auto_extend //是否自动扩大范围 0 不扩大
- * @returns
- */
- export function getkeywordPoi(location, keywordValue) {
- return new Promise((resolve, reject) => {
- let keyword = keywordValue ? "&keyword=" + encodeURI(keywordValue) : "";
- // 关键词搜索
- let api =
- "https://apis.map.qq.com/ws/place/v1/suggestion?output=jsonp&page_size=10®ion_fix=1";
- let key = `&key=${TxMapKey}`;
- let locationPos = `&location=${location.latitude},${location.longitude}`;
- jsonp(api + locationPos + keyword + key)
- .then((res) => {
- console.log(keyword);
- console.log(res);
- resolve(res);
- })
- .catch((err) => {
- console.log(err);
- reject(err);
- });
- });
- }
|