detail.js 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. // pagesPublic/pages/tdcr/details/detail.js
  2. const { imgUrl } = require('../../api/request')
  3. Page({
  4. /**
  5. * 页面的初始数据
  6. */
  7. data: {
  8. imgPath: imgUrl + 'tdcr/',
  9. headerStyle: {},
  10. tabs: [{
  11. label: '概况',
  12. }, {
  13. label: '基本情况',
  14. }, {
  15. label: '周边配套',
  16. }, {
  17. label: '其他地块',
  18. }],
  19. tabActive: 0,
  20. dataIndex: 0,
  21. list: [],
  22. peripherytabsindex:0,
  23. markers: [],
  24. scale: '16',
  25. centerPoint: {
  26. longitude: 106.596361,
  27. latitude: 29.579387,
  28. }
  29. },
  30. /**
  31. * 生命周期函数--监听页面加载
  32. */
  33. onLoad(options) {
  34. const _this = this
  35. wx.request({
  36. url: imgUrl + 'tdcr/details/data.json',
  37. success: (res) => {
  38. console.log(res);
  39. _this.setData({
  40. headerStyle: wx.getMenuButtonBoundingClientRect(),
  41. dataIndex: options.index,
  42. list: res.data,
  43. })
  44. _this.initPage()
  45. }
  46. })
  47. },
  48. /**
  49. * 生命周期函数--监听页面初次渲染完成
  50. */
  51. onReady() {
  52. },
  53. /**
  54. * 生命周期函数--监听页面显示
  55. */
  56. onShow() {
  57. },
  58. /**
  59. * 生命周期函数--监听页面隐藏
  60. */
  61. onHide() {
  62. },
  63. /**
  64. * 生命周期函数--监听页面卸载
  65. */
  66. onUnload() {
  67. },
  68. /**
  69. * 页面相关事件处理函数--监听用户下拉动作
  70. */
  71. onPullDownRefresh() {
  72. },
  73. /**
  74. * 页面上拉触底事件的处理函数
  75. */
  76. onReachBottom() {
  77. },
  78. /**
  79. * 用户点击右上角分享
  80. */
  81. onShareAppMessage() {
  82. return {
  83. title: this.data.list[this.data.dataIndex].name,
  84. imageUrl: imgUrl + '/tdcr/share.jpg'
  85. }
  86. },
  87. tabEvent(e) {
  88. this.setData({
  89. tabActive: e.target.dataset.index,
  90. })
  91. },
  92. peripherytabEvent(e){
  93. this.setData({
  94. peripherytabsindex: e.target.dataset.index,
  95. })
  96. },
  97. goBack() {
  98. wx.navigateBack()
  99. },
  100. callPhone() {
  101. const _this = this
  102. wx.makePhoneCall({
  103. phoneNumber: _this.data.list[_this.data.dataIndex].phoneNum + '',
  104. fail: (e) => {
  105. console.log(e);
  106. }
  107. })
  108. },
  109. mapMarkerEvent(e) {
  110. const map = this.data.list[this.data.dataIndex].surroundingFacilities.filter(item => item.id == e.target.dataset.id)
  111. this.setData({
  112. centerPoint: {
  113. longitude: map[0].longitude,
  114. latitude: map[0].latitude,
  115. }
  116. })
  117. },
  118. switchDetail(e) {
  119. console.log(e);
  120. this.setData({
  121. dataIndex: e.target.dataset.index || e.currentTarget.dataset.index,
  122. tabActive: 0
  123. })
  124. this.initPage()
  125. },
  126. initPage() {
  127. let markers = []
  128. this.data.list[this.data.dataIndex].surroundingFacilities.forEach(map => {
  129. markers.push({
  130. id: map.id,
  131. latitude: map.latitude,
  132. longitude: map.longitude,
  133. callout: {
  134. content: map.name,
  135. fontSize: 11,
  136. padding: 5,
  137. borderRadius: 5,
  138. display: 'ALWAYS'
  139. },
  140. iconPath: imgUrl + 'location.png',
  141. width: 20,
  142. height: 25,
  143. })
  144. })
  145. let polygons = []
  146. this.data.list[this.data.dataIndex].polygon.forEach(item => {
  147. polygons.push({
  148. dashArray: [10, 10],
  149. strokeColor: '#ffe20063',
  150. fillColor: '#ffe20063',
  151. points: item
  152. })
  153. })
  154. this.setData({
  155. markers,
  156. scale: this.data.list[this.data.dataIndex].scale || '16',
  157. polygons,
  158. centerPoint: {
  159. longitude: this.data.list[this.data.dataIndex].longitude,
  160. latitude: this.data.list[this.data.dataIndex].latitude,
  161. },
  162. })
  163. },
  164. mapEvent(e) {
  165. this.data.list[this.data.dataIndex].polygon.forEach(item => {
  166. const arr = item.map(p => {
  167. return [
  168. p.longitude,
  169. p.latitude
  170. ]
  171. })
  172. if (this.pointInPolygon([e.detail.longitude, e.detail.latitude], arr)) {
  173. wx.navigateTo({
  174. url: '/pages/map2/map?dataIndex=' + this.data.dataIndex + '&type=tdcr',
  175. })
  176. return
  177. }
  178. })
  179. },
  180. pointInPolygon(point, polygon) {
  181. let x = point[0], y = point[1];
  182. let inside = false;
  183. for (let i = 0, j = polygon.length - 1; i < polygon.length; j = i++) {
  184. let xi = polygon[i][0], yi = polygon[i][1];
  185. let xj = polygon[j][0], yj = polygon[j][1];
  186. let intersect = ((yi > y) !== (yj > y)) && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);
  187. if (intersect) inside = !inside;
  188. }
  189. return inside;
  190. }
  191. })