123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208 |
- // 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;
- }
- })
|