// pagesPublic/pages/tdcr/details/detail.js const { imgUrl } = require('../../api/request') Page({ /** * 页面的初始数据 */ data: { imgPath: imgUrl + 'tdcr/', headerStyle: {}, tabs: [{ label: '概况', }, { label: '基本情况', }, { label: '周边配套', }, { label: '其他地块', }], tabActive: 0, dataIndex: 0, list: [], peripherytabsindex:0, markers: [], scale: '16', centerPoint: { longitude: 106.596361, latitude: 29.579387, } }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { const _this = this wx.request({ url: imgUrl + 'tdcr/details/data.json', success: (res) => { console.log(res); _this.setData({ headerStyle: wx.getMenuButtonBoundingClientRect(), dataIndex: options.index, list: res.data, }) _this.initPage() } }) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { return { title: this.data.list[this.data.dataIndex].name, imageUrl: imgUrl + '/tdcr/share.jpg' } }, tabEvent(e) { this.setData({ tabActive: e.target.dataset.index, }) }, peripherytabEvent(e){ this.setData({ peripherytabsindex: e.target.dataset.index, }) }, goBack() { wx.navigateBack() }, callPhone() { const _this = this wx.makePhoneCall({ phoneNumber: _this.data.list[_this.data.dataIndex].phoneNum + '', fail: (e) => { console.log(e); } }) }, mapMarkerEvent(e) { const map = this.data.list[this.data.dataIndex].surroundingFacilities.filter(item => item.id == e.target.dataset.id) this.setData({ centerPoint: { longitude: map[0].longitude, latitude: map[0].latitude, } }) }, switchDetail(e) { console.log(e); this.setData({ dataIndex: e.target.dataset.index || e.currentTarget.dataset.index, tabActive: 0 }) this.initPage() }, initPage() { let markers = [] this.data.list[this.data.dataIndex].surroundingFacilities.forEach(map => { markers.push({ id: map.id, latitude: map.latitude, longitude: map.longitude, callout: { content: map.name, fontSize: 11, padding: 5, borderRadius: 5, display: 'ALWAYS' }, iconPath: imgUrl + 'location.png', width: 20, height: 25, }) }) let polygons = [] this.data.list[this.data.dataIndex].polygon.forEach(item => { polygons.push({ dashArray: [10, 10], strokeColor: '#ffe20063', fillColor: '#ffe20063', points: item }) }) this.setData({ markers, scale: this.data.list[this.data.dataIndex].scale || '16', polygons, centerPoint: { longitude: this.data.list[this.data.dataIndex].longitude, latitude: this.data.list[this.data.dataIndex].latitude, }, }) }, mapEvent(e) { this.data.list[this.data.dataIndex].polygon.forEach(item => { const arr = item.map(p => { return [ p.longitude, p.latitude ] }) if (this.pointInPolygon([e.detail.longitude, e.detail.latitude], arr)) { wx.navigateTo({ url: '/pages/map2/map?dataIndex=' + this.data.dataIndex + '&type=tdcr', }) return } }) }, pointInPolygon(point, polygon) { let x = point[0], y = point[1]; let inside = false; for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) { let xi = polygon[i][0], yi = polygon[i][1]; let xj = polygon[j][0], yj = polygon[j][1]; let intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi); if (intersect) inside = !inside; } return inside; } })