509 lines
14 KiB
JavaScript
509 lines
14 KiB
JavaScript
// 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),
|
||
});
|
||
}
|
||
},
|
||
});
|