bridgeSpace/miniprogram/pages/map/map.js

544 lines
15 KiB
JavaScript
Raw Permalink 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/map.js
var QQMapWX = require('../../utils/qqmap-wx-jssdk.js');
var qqmapsdk = new QQMapWX({
key: 'QLPBZ-QODCX-7KB46-TQERC-T36BT-IIBJO' // 必填
});
Page({
/**
* 页面的初始数据
*/
data: {
isChecked:false,
inputVal:'',
latitude: 33.963864,
longitude: 118.277435,
suggestion:[],
district:{
latitude: 34.093003,
longitude: 118.756021,
},
distance: '',
distance: '',
scale: 11,
currMaker: {},
markers: [],
customCalloutMarkerIds: [1,2,3],
list:{name:'1111',},
mapShow:true,
tabList: [{
title: '总体情况',
num: 0
}, {
title: '特殊事件',
num: 1
}],
listNew: [{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'},{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'},{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'},{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'},{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'},{id:'01',title:'日本7.2级地震',content:'170000日本发生7.2级地震,张家港桥跨中位移超限,其余桥梁无异',year:'2022年7月7日'}], // 数据列表
page: 0, // page当前页--
currentIndex: 0,
bridge:[],
bridgeItem:{
iconPath: './images/mapIcon.png',
width: 25,
height: 25,
bridgeName: '淮沭新河特大桥',
latitude: 34.079334,
longitude: 118.726242,
img:'./images/hsxhtdq.png',
id: "1",
callout: {
display: 'BYCLICK'
}
},
flag: true,
// 用户输入的关键词
searchValue:'',
// 滚动选择的索引
selectSchoolIndex:'',
school_name:'',
schoolValidate:'',
school_id:''
},
pagechange: function (e) {
console.log("e",e)
// 通过touch判断改变tab的下标值
// if ("touch" === e.detail.source) {
// let currentPageIndex = this.data.currentIndex;
// currentPageIndex = (currentPageIndex + 1) % 2;
// // 拿到当前索引并动态改变
// this.setData({
// currentIndex: currentPageIndex,
// })
// }
},
//获取所有桥梁数据
getMainbridge: function () {
let that = this;
// 调用云函数
wx.cloud.callContainer({
config: {
env: 'prod-3g40nj3p9469214c',// 微信云托管的环境ID
},
path: '/api/v1/bridges',
method: 'GET',
header: {
'X-WX-SERVICE': 'bsisp-api',
'content-type': 'application/json',
'Authorization':'Bearer '+wx.getStorageSync('token')
},
success: function (res) {
console.log("res",res)
if(res.data.status="SUCCESS"){
var getBridgeContent = []
console.log("res.data.data",res.data.data)
for (let i = 0; i < res.data.data.length; i++) {
getBridgeContent.push({ // 获取返回结果放到sug数组中
iconPath: './images/mapIcon.png',
width: 25,
height: 25,
callout: {
display: 'BYCLICK'
},
bridgeName: res.data.data[i].bridgeName,
id: Number(res.data.data[i].id),
img: res.data.data[i].fileId,
latitude: res.data.data[i].latitude,
longitude: res.data.data[i].longitude,
bridgeLength: res.data.data[i].bridgeLength,
bridgeType: res.data.data[i].bridgeType,
roadNo: res.data.data[i].roadNo,
stakeNo: res.data.data[i].stakeNo,
});
}
console.log("getBridgeContent",getBridgeContent)
that.getMyLocation(getBridgeContent)
that.setData({
bridge: getBridgeContent
})
console.log("that.data.bridge",that.data.bridge)
}
}
})
},
//获取单个桥数据 //wx.getStorageSync
getItembridge: function (e) { // 一定要传递参数e
console.log("e",e)
console.log("wx.getStorageSync('token')",wx.getStorageSync('token'))
// const that = this // 保存this对象
// 调用云函数
wx.cloud.callContainer({
config: {
env: 'prod-3g40nj3p9469214c',// 微信云托管的环境ID
},
path: '/api/v1/bridges',
method: 'get',
header: {
'X-WX-SERVICE': 'bsisp-api',
'content-type': 'application/json',
'Authorization':'Bearer '+wx.getStorageSync('token')
},
data: {
bridgeName: [e]// 从缓存中获取到phoneNumber字段
},
success: function (res) {
console.log("res",res)
}
})
},
showSchoolPicker()
{
console.log("1111")
let self = this;
self.showDatePicker()
},
hiddeDatePicker()
{
let self = this;
self.setData({
flag: !self.data.flag
})
},
showDatePicker()
{
let self = this;
self.setData({
flag: !self.data.flag
})
// self.getItems(self.bridge)
},
confirm(e)
{
console.log("self.e",e)
let self = this;
self.setData({
flag: !self.data.flag
})
// self.inputVal
// 获取选择
let item = self.data.bridge[self.data.selectSchoolIndex]?self.data.bridge[self.data.selectSchoolIndex]:self.data.bridge[0];
console.log("item",item)
// 通过发送自定义事件把用户选择的传递到父组件
self.setData({
// 选择
inputVal:item.bridgeName
})
self.bindmarkertap(e,item)
},
bindChangePicker(e)
{
console.log("e.detail.value[0]",e)
console.log("e.detail.value[0]",e.detail.value[0])
let self = this;
self.setData({
// 索引
selectSchoolIndex:e.detail.value[0]
})
},
//点击tab时触发
titleClick: function (e) {
console.log("e",e.currentTarget.dataset.idx)
this.setData({
//拿到当前索引并动态改变
currentIndex: e.currentTarget.dataset.idx
})
},
// 选择位置
handlePos(val){
console.log(val,'asdas');
var _this = this;
//调用关键词提示接口
qqmapsdk.getSuggestion({
//获取输入框值并设置keyword参数
keyword: val.detail.value, //用户输入的关键词,可设置固定值,如keyword:'KFC'
//region:'北京', //设置城市名,限制关键词所示的地域范围,非必填参数
success: function(res) {//搜索成功后的回调
console.log(res);
var sug = [];
for (var i = 0; i < res.data.length; i++) {
sug.push({ // 获取返回结果放到sug数组中
title: res.data[i].title,
id: Number(res.data[i].id),
addr: res.data[i].bridgeName,
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
});
},
fail: function(error) {
console.error(error);
},
complete: function(res) {
console.log(res);
}
});
},
// 获取我的位置
getMyLocation: function (e) {
var that = this;
console.log("e",e)
that.setData({
markers: e
})
// wx.getLocation({
// type: 'gcj02',
// success: function (res) {
// that.setData({
// latitude: res.latitude,
// longitude: res.longitude
// })
// }
// })
},
// marker的点击事件
bindmarkertap(e,index) {
console.log('e', e)
if(index){
console.log('index', index)
// this.getItembridge(index.bridgeName)
let that = this
that.setData({
currMaker: index
})
let _markers = that.data.markers
console.log('_markers', _markers)
let arr = []
for (let i = 0; i < _markers.length; i++) {
if (_markers[i].bridgeName === index.bridgeName) {
that.setData({
isChecked:true ,
list:_markers[i]
})
arr.push({
bridgeName: _markers[i].bridgeName,
latitude: _markers[i].latitude,
longitude: _markers[i].longitude,
img:_markers[i].img,
id: Number(_markers[i].id),
width: 40,
height: 40,
iconPath: './images/mapIcon.png',
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
callout: {
content: _markers[i].bridgeName,
img:_markers[i].img,
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
display: 'ALWAYS',
color: '#333333',
bgColor: '#fff',
padding: 10,
borderRadius: 10,
borderColor: '#fff',
fontSize: 16,
borderWidth: 5,
textAlign: 'center',
},
})
} else {
arr.push({
bridgeName: _markers[i].bridgeName,
img:_markers[i].img,
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
latitude: _markers[i].latitude,
longitude: _markers[i].longitude,
id: Number(_markers[i].id),
width: 25,
height: 25,
iconPath: './images/mapIcon.png',
callout: {
display: 'BYCLICK'
}
})
}
}
that.setData({
markers: arr
})
wx.hideLoading({
success: (res) => {
console.log(arr)
},
})
}else{
let that = this
let _markers = that.data.markers
console.log('_markers', _markers)
let markerId = parseInt(e.detail.markerId)
console.log('markerId', markerId)
_markers.forEach(item => {
// console.log('item', item)
if (Number(item.id) === markerId) {
// console.log('11111', item)
that.setData({
currMaker: item
})
}
})
let currMaker = that.data.currMaker
console.log('currMaker', that.data.currMaker)
this.getItembridge(currMaker.bridgeName)
// qqmapsdk.calculateDistance({
// to: [{
// latitude: currMaker.latitude,
// longitude: currMaker.longitude
// }],
// success: function (res) {
// console.log("res",res)
let arr = []
for (let i = 0; i < _markers.length; i++) {
if (Number(_markers[i].id) === markerId) {
console.log("_markers[i].id",_markers[i].id)
that.setData({
isChecked:true ,
list:_markers[i]
})
arr.push({
bridgeName: _markers[i].bridgeName,
latitude: _markers[i].latitude,
longitude: _markers[i].longitude,
img:_markers[i].img,
id: Number(_markers[i].id),
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
width: 40,
height: 40,
iconPath: './images/mapIcon.png',
callout: {
// content: `距您${distanceKm}`,
content: _markers[i].bridgeName,
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
img:_markers[i].img,
display: 'ALWAYS',
color: '#333333',
bgColor: '#fff',
padding: 10,
borderRadius: 10,
borderColor: '#fff',
fontSize: 16,
borderWidth: 5,
textAlign: 'center',
},
})
} else {
arr.push({
bridgeName: _markers[i].bridgeName,
img:_markers[i].img,
bridgeLength: _markers[i].bridgeLength,
bridgeType: _markers[i].bridgeType,
roadNo: _markers[i].roadNo,
stakeNo: _markers[i].stakeNo,
latitude: _markers[i].latitude,
longitude: _markers[i].longitude,
id: Number(_markers[i].id),
width: 25,
height: 25,
iconPath: './images/mapIcon.png',
callout: {
display: 'BYCLICK'
}
})
}
}
that.setData({
markers: arr
})
wx.hideLoading({
success: (res) => {
console.log(arr)
},
})
}
// }
// })
},
// 跳转列表
handleRouter(){
wx.navigateTo({
url:'/pages/list/list'
})
},
getOnlineDistrict(latitude, longitude) {
var that = this;
//通过这个方法来实现经纬度反推省市区
qqmapsdk.reverseGeocoder({
location: {
latitude: 34.093003,
longitude: 118.756021,
},
success: function (res) {
// var obj = {
// latitude: 34.093003,
// longitude: 118.756021,
// }
// that.setData({
// district:obj
// })
// console.log(res,'asda');
}
})
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
console.log("options",options)
var that = this
that.getMainbridge()
that.getOnlineDistrict()
// wx.getLocation({
// type: 'wgs84',
// // altitude: false,
// success: (result) => {
// console.log("result",result)
// // var obj = {
// // latitude:result.latitude,longitude:result.longitude
// // }
// that.getOnlineDistrict(result.latitude, result.longitude)
// },
// });
},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {
},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {
},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {
},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {
},
//点击地图
handleClickMarker(e){
console.log("111",e)
},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {
}
})