| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 | <template>	<view>		<cu-custom bgColor="bg-blue" :isBack="true">			<block slot="backText">返回</block>			<block slot="content"> 地图可视化</block>		</cu-custom>		<!-- 		<view>			<web-view src="/hybrid/html/map.html" @onPostMessage="handlePostMessage" @message="handlePostMessage"				:webview-styles="webviewStyles">			</web-view>		</view> -->		<!--绑定点击事件-->		<!--地图容器-->		<map id="myMap" :markers="markers" style="width: 100%;" :style="'height:' + windowHeight + 'px;'"			:longitude="m_longitude" :latitude="m_latitude" scale='15' @markertap="markertap">		</map>	</view></template><script>	// 引入SDK核心类	var QQMapWX = require('../../libs/qqmap-wx-jssdk.js');	// 实例化API核心类	var qqmapsdk = new QQMapWX({		key: '4OWBZ-KZICJ-PCPFK-XWKUM-FLKFJ-C5FI2' // 必填	});	import mapVisualizationService from '@/api/map/mapVisualization'	export default {		data() {			return {				windowHeight: uni.getSystemInfoSync().windowHeight - 45, //屏幕高度				markers: [],				m_longitude: 120.139726,				m_latitude: 33.345562,				currentWebview: '',				webviewStyles: { // web-view样式					width: "100%",					height: "100%",					top: 90,				},			}		},		components: {},		onReady() {		},		mounted() {			this.getBuildingList()		},		methods: {			markertap(e) {				// 获取点击的marker的customData				let markerId = e.detail.markerId;				let selectedMarker = this.markers.find(marker => marker.id === markerId);				let customData = selectedMarker.customData				uni.navigateTo({					url: '/pages/map/companyShow?buildingId=' + customData.buildingId +						'&buildingName=' + customData.buildingName				});			},			convert2TecentMap(lng, lat) {			  if (lng == '' && lat == '') {			    return {			      lng: '',			      lat: ''			    }			  }			  var x_pi = 3.14159265358979324 * 3000.0 / 180.0			  var x = lng - 0.0065			  var y = lat - 0.006			  var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi)			  var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi)			  var qqlng = z * Math.cos(theta)			  var qqlat = z * Math.sin(theta)			  return {			    lng: qqlng,			    lat: qqlat			  }			},			//获取楼宇信息			getBuildingList() {				uni.showLoading()				mapVisualizationService.getBuildingList().then(({					data				}) => {					if (data != null && data.length > 0) {						let mar_arr = []						data.forEach((item, index) => {							//百度坐标转腾讯							let convertPoint = this.convert2TecentMap(item.building_longitude, item.building_latitude)														mar_arr.push({								id: index,								title: item.building_name,								longitude: convertPoint.lng,								latitude: convertPoint.lat,								iconPath: '/static/img/building_ph.png',								width: 35,								callout: {									content: item.building_name,									display: 'ALWAYS'								},								customData: {									buildingId: item.building_id,									buildingName: item.building_name								}							})						})						this.markers = mar_arr						this.getCenterPoint(this.markers)					}					uni.hideLoading()				}).catch((e) => {					uni.hideLoading()				})			},			//计算所有点的中心点			getCenterPoint(markers) {			  let minLat = 90, maxLat = -90, minLng = 180, maxLng = -180;			  markers.forEach(marker => {			    if (marker.latitude < minLat) minLat = marker.latitude;			    if (marker.latitude > maxLat) maxLat = marker.latitude;			    if (marker.longitude < minLng) minLng = marker.longitude;			    if (marker.longitude > maxLng) maxLng = marker.longitude;			  });			  			  this.m_latitude = (minLat + maxLat) / 2			  this.m_longitude = (minLng + maxLng) / 2			},			//获取天地图参数			handlePostMessage(data) {				console.log('天地图发来的数据', data.detail.data[0].buildingId)				//企业数量检测				// uni.showLoading()				// mapVisualizationService.getCompanyNum(data.detail.data[0].buildingId).then(({				// 	data				// }) => {				// 	if (data != null && data > 0) {				// 	}				// 	uni.hideLoading()				// }).catch((e) => {				// 	uni.hideLoading()				// })				uni.navigateTo({					url: '/pages/map/companyShow?buildingId=' + data.detail.data[0].buildingId +						'&buildingName=' + data.detail.data[0].buildingName				});			},		}	}</script><style scoped lang="scss">	</style>
 |