import http from '../../utils/api' const baseUr = require('../../utils/baseUrl') Page({ /** * 页面的初始数据 */ data: { longitude: null, latitude: null, markers: [], activeTab: 'clinic', baseUr: baseUr, showDetail: false, currentMarker: null }, // 切换标签页 switchTab(e) { const tab = e.currentTarget.dataset.tab; this.setData({ activeTab: tab, showDetail: false // 切换标签时关闭详情 }); // 这里可以添加切换标签后的逻辑 if (tab === 'clinic') { // 药店诊所相关操作 console.log('切换到药店诊所'); http.pharmacy({ data: {}, success: res => { console.log(111, res); this.setData({ markers: res.rows.map((point, index) => ({ id: point.id, title: point.title, latitude: point.latitude, longitude: point.longitude, iconPath: point.iconPath ? baseUr + point.iconPath : '/pages/images/dw.png', width: 35, height: 35, // 添加气泡标签显示名称 callout: { content: point.title, color: '#333', fontSize: 12, borderRadius: 4, bgColor: '#ffffff', padding: 4, display: 'ALWAYS' }, // 保存详细信息 merchantType: point.merchantType, region: point.region, address: point.address })) }) // 调整地图视野以显示所有标记 if (res.rows.length > 0) { this.adjustMapView(res.rows); } } }) } else if (tab === 'guide') { // 办事指南相关操作 console.log('切换到办事指南'); http.guidance({ data: {}, success: res => { console.log(222, res); // 清除地图标记 this.setData({ markers: [] }); } }) } }, // 调整地图视野以显示所有标记点 adjustMapView(points) { const mapContext = wx.createMapContext('myMap', this); if (points && points.length > 0) { // 将点转换为地图需要的格式 const mapPoints = points.map(point => ({ latitude: point.latitude, longitude: point.longitude })); // 如果有当前位置,也包含在内 if (this.data.latitude && this.data.longitude) { mapPoints.push({ latitude: this.data.latitude, longitude: this.data.longitude }); } // 调整地图视野 mapContext.includePoints({ points: mapPoints, padding: [60, 60, 60, 60] }); } }, // 地图标记点击事件 onMarkerTap(e) { const markerId = e.markerId; const marker = this.data.markers.find(m => m.id === markerId); if (marker) { this.setData({ showDetail: true, currentMarker: { title: marker.title, merchantType: marker.merchantType, region: marker.region, address: marker.address, latitude: marker.latitude, longitude: marker.longitude } }); } }, // 关闭详情 closeDetail() { this.setData({ showDetail: false, currentMarker: null }); }, // 导航到标记点 navigateToMarker() { if (this.data.currentMarker) { const { latitude, longitude, title, address } = this.data.currentMarker; wx.openLocation({ latitude: latitude, longitude: longitude, name: title, address: address, scale: 18 }); } }, // 获取当前位置信息 getlocation() { var that = this wx.getLocation({ isHighAccuracy: true, type: 'gcj02', success: function (res) { console.log(res); const latitude = res.latitude; const longitude = res.longitude; that.setData({ latitude: latitude, longitude: longitude }); // 加载初始数据 that.switchTab({ currentTarget: { dataset: { tab: 'clinic' } } }); } }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { this.getlocation() }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { this.setData({ showDetail: false }); }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })