yuminge-app/yun-min-program-plugin-master/packageC/o2o/o2oLocation_loc/o2oLocation_loc.js

509 lines
14 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// pages/o2oLocation_loc/o2oLocation_loc.js
var QQMapWX = require("../../../mymap/qqmap-wx-jssdk.min.js");
var qqmapsdk;
var app = getApp();
Page({
/**
* 页面的初始数据
*/
data: {
suggestion: [],
address_latitude: "",
address_longitude: "",
markers: [],
address_detail: "",
suggestionshow: false,
mksData: [],
mapmessageData: {
title: "",
message: "",
latitude: "",
longitude: "",
city: "",
},
scaleData: 16,
tag: "",
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
if (options.id) {
this.setData({
id: options.id,
});
}
if (options.store_id) {
this.setData({
store_id: options.store_id,
form: JSON.parse(options.form),
create: options.create,
});
}
if (!app.globalData.qqmapkey) {
app._getTemplate().then((res) => {
qqmapsdk = new QQMapWX({
key: app.globalData.qqmapkey,
});
if (options.tag) {
this.setData({
tag: options.tag,
});
}
this.poscurrent();
});
} else {
qqmapsdk = new QQMapWX({
key: app.globalData.qqmapkey,
});
if (options.tag) {
this.setData({
tag: options.tag,
});
}
this.poscurrent();
}
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady: function () {},
/**
* 生命周期函数--监听页面显示
*/
onShow: function () {},
/**
* 生命周期函数--监听页面隐藏
*/
onHide: function () {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload: function () {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh: function () {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom: function () {},
/**
* 用户点击右上角分享
*/
onShareAppMessage: function () {},
searchconfirmbtn(e) {
var val = e.detail.value;
this.addressinp(val);
},
addressinpbtn(e) {
var val = e.detail.value;
this.addressinp(val);
},
addressinp(val) {
var _this = this;
if (!val) {
this.setData({
suggestionshow: false,
});
return;
}
//调用关键词提示接口
qqmapsdk.getSuggestion({
//获取输入框值并设置keyword参数
keyword: val, //用户输入的关键词,可设置固定值,如keyword:'KFC'
//region:'北京', //设置城市名,限制关键词所示的地域范围,非必填参数
sig: app.globalData.qqmapsig,
success: function (res) {
//搜索成功后的回调
var sug = [];
for (var i = 0; i < res.data.length; i++) {
sug.push({
// 获取返回结果放到sug数组中
title: res.data[i].title,
id: res.data[i].id,
addr: res.data[i].address,
city: res.data[i].city,
district: res.data[i].district,
latitude: res.data[i].location.lat,
longitude: res.data[i].location.lng,
});
}
_this.setData({
//设置suggestion属性将关键词搜索结果以列表形式展示
suggestion: sug,
suggestionshow: true,
});
},
fail: function (error) {
console.error(error);
},
complete: function (res) {},
});
},
//数据回填方法
backfill: function (e) {
var id = e.currentTarget.id;
for (var i = 0; i < this.data.suggestion.length; i++) {
if (i == id) {
this.setData({
address_detail: this.data.suggestion[i].title,
address_latitude: this.data.suggestion[i].latitude,
address_longitude: this.data.suggestion[i].longitude,
"mapmessageData.title": this.data.suggestion[i].title,
"mapmessageData.message": this.data.suggestion[i].addr,
"mapmessageData.latitude": this.data.suggestion[i].latitude,
"mapmessageData.longitude": this.data.suggestion[i].longitude,
"mapmessageData.city": this.data.suggestion[i].city,
suggestionshow: false,
});
this.nearby_search();
}
}
},
// 事件触发,调用接口
nearby_search: function () {
var _this = this;
// 调用接口
qqmapsdk.search({
keyword: this.data.address_detail, //搜索关键词
location: {
latitude: this.data.address_latitude,
longitude: this.data.address_longitude,
}, //设置周边搜索中心点
sig: app.globalData.qqmapsig,
success: function (res) {
//搜索成功后的回调
console.log("ccccc", res);
var mks = [];
var mksData = [];
for (var i = 0; i < res.data.length; i++) {
mks.push({
// 获取返回结果放到mks数组中
title: res.data[i].title,
id: res.data[i].id,
latitude: res.data[i].location.lat,
longitude: res.data[i].location.lng,
iconPath: "https://webapi.amap.com/theme/v1.3/markers/n/mark_b.png", //图标路径
width: 20,
height: 25,
callout: {
padding: "10rpx",
borderRadius: "5rpx",
content: res.data[i].title,
},
});
mksData.push({
address: res.data[i].address,
title: res.data[i].title,
latitude: res.data[i].location.lat,
longitude: res.data[i].location.lng,
id: res.data[i].id,
city: res.data[i].ad_info.city
? res.data[i].ad_info.city
: res.res.data[i].ad_info.province,
});
}
_this.setData({
//设置markers属性将搜索结果显示在地图中
markers: mks,
mksData: mksData,
});
},
fail: function (res) {
console.log(res);
},
complete: function (res) {
console.log(res);
},
});
},
getmarkertap(e) {
let markerId = e.markerId;
for (var i = 0; i < this.data.mksData.length; i++) {
let id = this.data.mksData[i].id;
if (markerId == id) {
this.setData({
"mapmessageData.title": this.data.mksData[i].title,
"mapmessageData.message": this.data.mksData[i].address,
"mapmessageData.latitude": this.data.mksData[i].latitude,
"mapmessageData.longitude": this.data.mksData[i].longitude,
"mapmessageData.city": this.data.mksData[i].city,
});
}
}
},
addbtn() {
let mapCtx = wx.createMapContext("myMap");
let that = this;
mapCtx.getScale({
success: function (e) {
let scale = e.scale;
that.setData({
scaleData: scale + 1,
});
},
});
},
minusbtn() {
let mapCtx = wx.createMapContext("myMap");
let that = this;
mapCtx.getScale({
success: function (e) {
let scale = e.scale;
that.setData({
scaleData: scale - 1,
});
},
});
},
addressplay() {
this.poscurrent();
},
poscurrent: function () {
let that = this;
wx.getSetting({
success(resData) {
if (!resData.authSetting["scope.userLocation"]) {
wx.authorize({
scope: "scope.userLocation",
success() {},
fail(msgData) {},
complete() {
that.getlocaldata();
},
});
}else{
that.getlocaldata();
}
},
});
},
getlocaldata() {
let that = this;
wx.getLocation({
type: "gcj02",
success(res) {
const latitude = res.latitude;
const longitude = res.longitude;
// const speed = res.speed;
// const accuracy = res.accuracy;
that._setaddressData({
lat: latitude,
lng: longitude,
});
},
fail(err) {
if (err.errMsg === "getLocation:fail auth deny") {
console.log("当初用户拒绝,再次发起授权");
wx.openSetting({
success(settingdata) {
if (settingdata.authSetting["scope.userLocation"]) {
wx.showToast({
icon: "none",
title: "获取权限成功",
duration: 1500,
});
that.getlocaldata();
} else {
wx.showToast({
icon: "none",
title: "获取权限失败,定位需要用户授权",
duration: 1500,
});
}
},
});
}
},
});
},
_setaddressData(e) {
let that = this;
app.getReverseGeocoder(e.lat,e.lng).then(function (res) {
that.setData({
address_detail: "",
address_latitude: res.location.lat,
address_longitude: res.location.lng,
"mapmessageData.title": res.formatted_addresses.recommend,
"mapmessageData.address_component": res.formatted_addresses,
"mapmessageData.message": res.address,
"mapmessageData.latitude": res.location.lat,
"mapmessageData.longitude": res.location.lng,
"mapmessageData.city": res.address_component.city
? res.address_component.city
: res.address_component.province,
});
}).catch(function(err){
console.log(err);
});
},
buttonbtn() {
var prevPage;
var pages;
let point = {
lat: this.data.address_latitude,
lng: this.data.address_longitude,
};
console.log(this.data.mapmessageData, point, "point");
wx.setStorage({
key: "address-point",
data: {
point: point,
city: this.data.mapmessageData.city,
address_component: this.data.mapmessageData.address_component
},
});
if (this.data.tag == "hotel") {
wx.reLaunch({
url:
"/packageC/hotel/HotelIndex/HotelIndex?addressData=" +
JSON.stringify(this.data.mapmessageData),
});
} else if (this.data.tag == "home") {
wx.reLaunch({
url:
"/packageG/index/index?addressData=" +
JSON.stringify(this.data.mapmessageData),
});
} else if (this.data.tag == "easyRefuel") {
wx.reLaunch({
url: "/packageD/easyRefuel/easyRefuel",
});
} else if (this.data.tag == "storeConsume") {
wx.reLaunch({
url:
"/packageH/o2o/storeConsumeIndex/storeConsumeIndex?id=" +
this.data.id,
});
} else if (this.data.tag == "appointment") {
console.log(this.data.mapmessageData);
let point = {
lat: this.data.mapmessageData.latitude,
lng: this.data.mapmessageData.longitude,
};
let pos = {
address: this.data.mapmessageData.message,
city: this.data.mapmessageData.city,
title: this.data.mapmessageData.title,
point: point,
};
pages = getCurrentPages();
prevPage = pages[pages.length - 3]; //上一个页面 -3就是上上一个页面
prevPage.setData({
//本页面数据赋值到上一个页面
pos,
});
wx.navigateBack({
delta: 2,
});
} else if (this.data.tag == "diy") {
let urls = wx.getStorageSync("diyurl");
wx.reLaunch({
url: urls,
});
} else if (this.data.tag == "activityHome") {
wx.reLaunch({
url:
"/packageC/Myshaky/activityHome/activityHome?city=" +
this.data.mapmessageData.city,
});
} else if (this.data.tag == "store") {
wx.navigateTo({
url:
"/packageD/buy/myOrder_v2/myOrder_v2?tag=" +
this.data.tag +
"&store_id=" +
this.data.store_id +
"&form=" +
JSON.stringify(this.data.form) +
"&create=" +
this.data.create +
"&is_point=" +
JSON.stringify(point),
});
} else if (this.data.tag == "storeApply") {
try {
wx.setStorageSync("applyaddresspoint", {
address: this.data.mapmessageData.message,
point: point,
city: this.data.mapmessageData.city,
});
wx.navigateBack({
delta: 1,
fail() {},
});
} catch (e) {
console.log(e);
}
} else if(this.data.tag == "selfCarryApply"){
wx.reLaunch({
url:
"/packageC/selfCarry/selfCarryApply/selfCarryApply?addressData=" +
JSON.stringify(this.data.mapmessageData),
});
}else if(this.data.tag == "communityStore" || this.data.tag == "communityStoreDetails"){
let point = {
lat: this.data.mapmessageData.latitude,
lng: this.data.mapmessageData.longitude,
};
let pos = {
address: this.data.mapmessageData.message,
city: this.data.mapmessageData.city,
title: this.data.mapmessageData.title,
point: point,
};
pages = getCurrentPages();
prevPage = pages[pages.length - 3]; //上一个页面 -3就是上上一个页面
prevPage.setData(
//本页面数据赋值到上一个页面
pos
);
prevPage._getData();
wx.navigateBack({
delta: 2,
});
} else if(this.data.tag.indexOf("project_verification")!==-1){
wx.setStorage({
key: "address-point",
data: { point: { lat: this.data.mapmessageData.latitude, lng: this.data.mapmessageData.longitude }, city: this.data.mapmessageData.message, address_component: this.data.mapmessageData.address_component }
});
switch(this.data.tag){
case "project_verification/MyProject":
wx.reLaunch({
url: '/packageH/project_verification/MyProject/MyProject?location_change=1',
});
break;
case "project_verification/VerificationProjectList":
wx.reLaunch({
url: '/packageH/project_verification/VerificationProjectList/VerificationProjectList?location_change=1',
});
break;
}
} else if(this.data.tag == "suppligoodsOrde"){
wx.navigateBack({
delta: 1
});
} else if(this.data.tag == "tagCloud"){
wx.navigateBack({
delta: 2
});
} else {
wx.reLaunch({
url:
"/packageC/o2o/o2oHome/o2oHome?addressData=" +
JSON.stringify(this.data.mapmessageData),
});
}
},
});