| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267 | <template>	<view>		<cu-custom bgColor="bg-blue" :isBack="true" backUrl="/pages/indexcf/indexcf">			<block slot="backText">返回</block>			<block slot="content"> 地图可视化</block>		</cu-custom>		<!--绑定点击事件-->		<!--地图容器-->		<map id="myMap" :markers="markers" style="width: 100%;" :style="'height:' + windowHeight + 'px;'"			:longitude="m_longitude" :latitude="m_latitude" scale='11' @markertap="markertap">			<view class="cu-capsule radius capsule-custom" >				<view class='cu-tag bg-blue' >					园区				</view>				<view class="cu-tag line-blue tag-custom" >					7个				</view>			</view>			<cover-view class="cu-bar search" style="width: 51%;float: right; min-height: 35px;">				<view class="search-form round" style="height: 30px; line-height: 30px; margin: 5px 5px 0px 0px;border: 1rpx solid #36A7F3;">					<text class="cuIcon-search"></text>					<input type="text"  placeholder="厂区面积搜索" v-model="curWord" confirm-type="search" @input="inputWord"></input>				</view>			</cover-view>			<br/>			<view class="cu-capsule radius capsule-custom" >				<view class='cu-tag bg-blue '>					厂房				</view>				<view class="cu-tag line-blue tag-custom">					360000㎡				</view>			</view>			<br/>			<view class="cu-capsule radius capsule-custom" >				<view class='cu-tag bg-blue '>					楼宇				</view>				<view class="cu-tag line-blue tag-custom">					28栋				</view>			</view>			<br/>			<view class="cu-capsule radius capsule-custom" >				<view class='cu-tag bg-blue '>					土地				</view>				<view class="cu-tag line-blue tag-custom">					54900亩				</view>			</view>		</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,				},				curWord: "" ,//当前搜索关键词				yqList: [					{						building_id: '1',						building_name: "亭湖区电子信息产业园",						site: "盐城市亭湖区南洋镇太湖路99号",						distance: "10km",						building_longitude: 120.232445,						building_latitude: 33.430631,						building_image: '../../static/img/th-park-1.jpg'					},					{						building_id: '2',						building_name: "睿思亭湖数字基地",						site: "江苏省盐城市亭湖区中亭路9号力拓花园3幢",						distance: "5.4km",						building_longitude: 120.209738,						building_latitude: 33.400009,						building_image: '../../static/img/th-park-2.jpg'					},					{						building_id: '3',						building_name: "盐城环保产业园",						site: "光伏路与经一路交叉口西北150米",						distance: "13.4km",						building_longitude: 120.269329,						building_latitude: 33.440453,						building_image: '../../static/img/th-park-3.jpg'					},					{						building_id: '4',						building_name: "江苏盐城光电产业园",						site: "盐城市亭湖区青墩连接线与太湖路交叉路口往西南约90米",						distance: "11km",						building_longitude: 120.237555,						building_latitude: 33.432122,						building_image: '../../static/img/th-park-4.jpg'					},					{						building_id: '5',						building_name: "盐东镇科技产业园",						site: "盐城市亭湖区利民村3组",						distance: "22.2km",						building_longitude: 120.355611,						building_latitude: 33.473836,						building_image: '../../static/img/th-park-5.jpg'					},					{						building_id: '6',						building_name: "兴泰(亭湖)产业园",						site: "江苏省盐城市亭湖区瑞鹤路",						distance: "14km",						building_longitude: 120.275086,						building_latitude: 33.44331,						building_image: '../../static/img/th-park-6.jpg'					},					{						building_id: '7',						building_name: "江苏新青洋智能装备产业园",						site: "江苏省盐城市亭湖区盐才路1号",						distance: "16.3km",						building_longitude: 120.192397,						building_latitude: 33.468225,						building_image: '../../static/img/th-park-7.jpg'					},				],			}		},		components: {},		onReady() {		},		mounted() {			this.getBuildingList()		},		methods: {			// 输入监听			inputWord(e){				// this.curWord = e.detail.value // 已使用v-model,无需再次赋值				// 节流,避免输入过快多次请求				this.searchTimer && clearTimeout(this.searchTimer)				this.searchTimer = setTimeout(()=>{					this.doSearch(this.curWord)				},300)			},			doSearch(sWord){							},			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/parkShow?parkId=' + customData.buildingId +						'&parkName=' + customData.buildingName + 						'&parkImage=' + customData.buildingImage				});			},			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() {				let data = this.yqList				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,								buildingImage: item.building_image							}						})					})					this.markers = mar_arr					this.getCenterPoint(this.markers)				}			},			//计算所有点的中心点			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			},		}	}</script><style scoped lang="scss">	.capsule-custom{		margin: 5px 0px 0px 5px; 		box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);	}	.tag-custom{		background-color: #f3f3f3;	}	.input-box-search{		margin-left: 20rpx;		background: #fff;		height: 60rpx;		width: 420rpx;		display: flex;		align-items: center;		border-radius: 30rpx;		padding-left: 10rpx;		margin-right: 20rpx;	}</style>
 |