suta/pages/ditu/index.vue

395 lines
9.2 KiB
Vue
Raw Normal View History

2024-05-11 10:06:09 +08:00
<template>
<view class="content">
<!-- <image src="../../static/a11.png" mode=""></image> -->
<!-- 地图 -->
<map class="map" id="map" ref="map" style="width: 100%; height: 100%;" :scale="zoomSize" :latitude="latitude"
:longitude="longitude" :markers="markers" :enable-satellite="isMap" show-location>
</map>
<view class="rightTool">
<view @click="fengchang" class="right_tool_item">蜂场<text style="color: #23693F;">{{fengchangNumber}}</text>
</view>
<view @click="fengxiang" class="right_tool_item">蜂箱<text style="color: #23693F;">{{fengxiangNumber}}</text>
</view>
</view>
</view>
</template>
<script>
import request from '../../utils/request'
export default {
name: "feature",
data() {
return {
fengchangNumber: 0,
fengxiangNumber: 0,
listData: [],
2024-06-05 09:24:17 +08:00
latitude: '',
longitude: '',
2024-05-11 10:06:09 +08:00
isMap: false,
zoomSize: 15,
fclist: [],
markers: [
2024-06-05 09:24:17 +08:00
{
// latitude:27.105794,
// longitude:120.256882,
// width: 20,
// height: 30,
// id: 0,
// iconPath: '../../static/aa1.png',
}
2024-05-11 10:06:09 +08:00
],
}
},
onShow() {
this.markers = []
this.getLocation()
this.listDataFn()
this.getfengchangList()
},
methods: {
getfengchangList() {
request.get('/api/beehive/index', {}).then(res => {
this.fengxiangNumber = res.data.data.length
})
request.get('/api/apiary/index', {}).then(res => {
this.fengchangNumber = res.data.data.length
this.fclist = res.data.data
this.fclist.forEach(item => {
this.markers.push({
latitude: item.lat,
longitude: item.lng,
width: 25,
height: 25,
2024-06-13 17:59:39 +08:00
id: parseFloat(item.id),
2024-06-05 09:24:17 +08:00
iconPath: '../../static/蜂场.png',
2024-06-13 18:01:38 +08:00
label: {
2024-05-11 10:06:09 +08:00
content: item.name,
2024-06-13 17:59:39 +08:00
fontSize:15,
2024-06-05 09:24:17 +08:00
anchorX: (() => {
2024-06-13 17:59:39 +08:00
if (item.name.length < 2) {
return -6
}else if(item.name.length <= 2){
2024-06-05 09:37:57 +08:00
return -13
2024-06-05 09:24:17 +08:00
} else if (item.name.length <= 3) {
return -20
} else if (item.name.length <= 4) {
return -30
2024-06-05 09:37:57 +08:00
} else if (item.name.length <= 5) {
2024-06-05 09:24:17 +08:00
return -35
2024-06-05 09:37:57 +08:00
} else if (item.name.length <= 6) {
2024-06-05 09:24:17 +08:00
return -40
2024-06-05 09:37:57 +08:00
} else if (item.name.length <= 8) {
return -50
2024-06-05 09:24:17 +08:00
} else if (item.name.length <=
10) {
2024-06-05 09:37:57 +08:00
return -60
2024-06-05 09:24:17 +08:00
} else {
2024-06-05 09:37:57 +08:00
return -item.name.length * 6.5
2024-06-05 09:24:17 +08:00
}
})(),
2024-05-11 10:06:09 +08:00
},
})
})
})
},
async listDataFn() {
await request.get('/api/beehive/index2map').then(res => {
// console.log(res.data.data)
this.listData = [...res.data.data]
this.mapdian()
})
},
mapdian() {
this.listData.forEach(item => {
if (item.status_text == '在线') {
this.markers.push({
latitude: item.lat,
longitude: item.lng,
width: 15,
height: 15,
2024-06-13 17:59:39 +08:00
id: parseFloat(item.id),
2024-05-11 10:06:09 +08:00
iconPath: '../../static/a11.png',
label: {
content: item.name,
2024-06-05 09:24:17 +08:00
anchorX: (() => {
2024-06-13 17:59:39 +08:00
if (item.name.length < 2) {
return -6
}else if(item.name.length <= 2){
2024-06-05 09:24:17 +08:00
return -12
} else if (item.name.length <= 3) {
return -20
} else if (item.name.length <= 4) {
return -25
} else if (item.name.length <= 5) {
return -30
} else if (item.name.length <= 6) {
return -35
} else if (item.name.length <= 8) {
return -40
} else if (item.name.length <=
10) {
return -45
} else {
return -item.name.length * 5
}
})(),
2024-05-11 10:06:09 +08:00
}
})
} else {
this.markers.push({
latitude: item.lat,
longitude: item.lng,
width: 15,
height: 15,
2024-06-13 17:59:39 +08:00
id: parseFloat(item.id),
2024-05-11 10:06:09 +08:00
iconPath: '../../static/a22.png',
label: {
content: item.name,
2024-06-05 09:24:17 +08:00
anchorX: (() => {
2024-06-13 17:59:39 +08:00
if (item.name.length < 2) {
return -6
}else if(item.name.length <= 2){
return -12
} else if (item.name.length <= 3) {
2024-06-05 09:24:17 +08:00
return -20
} else if (item.name.length <= 4) {
return -25
} else if (item.name.length <= 5) {
return -30
} else if (item.name.length <= 6) {
return -35
} else if (item.name.length <= 8) {
return -40
} else if (item.name.length <=
10) {
return -45
} else {
return -item.name.length * 5
}
})(),
2024-05-11 10:06:09 +08:00
}
})
}
})
},
async getLocation() {
// 获取用户当前的位置
// console.log('1111')
const {
latitude,
longitude
} = await uni.getLocation()
console.log(latitude, longitude)
this.latitude = latitude
this.longitude = longitude,
this.markers.push({
latitude,
longitude,
2024-06-05 09:24:17 +08:00
width: 1,
height: 1,
2024-06-13 17:59:39 +08:00
id: parseFloat(0),
2024-06-05 09:24:17 +08:00
iconPath:'',
2024-05-11 10:06:09 +08:00
customCallout: {
2024-06-05 09:24:17 +08:00
// anchorY: -5,
2024-06-13 17:59:39 +08:00
anchorX:-5,
2024-05-11 10:06:09 +08:00
display: 'BYCLICK'
}
})
},
fengchang() { // 跳转蜂场
wx.switchTab({
url: '/pages/fengchang/index'
})
},
fengxiang() { // 跳转蜂箱
wx.switchTab({
url: '/pages/fengxiang/index'
})
}
}
// methods: {
// toggle(){
// this.isMap=!this.isMap
// },
// blowup(){
// if(this.zoomSize >= 20) return
// this.zoomSize++
// },
// minification(){
// if(this.zoomSize <= 3) return
// this.zoomSize--
// },
// back(){
// this.map = uni.createMapContext("map", this);
// this.map.moveToLocation()
// },
// mapTap({detail: {latitude,longitude}}){
// if(this.flag){
// this.option = {
// id: ++this.id,
// latitude: latitude,
// longitude: longitude,
// width: 20,
// height: 30
// }
// let arr=[]
// this.markers.push(this.option)
// for (let index = 1; index < this.markers.length; index++) {
// arr.push({
// latitude:this.markers[index].latitude,
// longitude: this.markers[index].longitude
// })
// }
// this.option=arr;
// }
// },
// measuredArea(){
// this.flag=!this.flag
// },
// wayAll(){
// if (this.option.length > 2) {
// console.log(this.option);
// this.polygons[0].points=[];
// this.polygons[0].points.push(...this.option)
// this.markers[1]["callout"]={
// content: "4917.9平方公里",
// display: "ALWAYS",
// padding: 6,
// borderRadius: 5,
// borderWidth: 1,
// borderColor: "#3D8DFE",
// anchorX:30,
// anchorY:10
// }
// console.log(this.polygons,'得到的数值');
// }else{
// uni.showToast({
// title:"起码选择三个点",
// duration: 2000
// })
// }
// },
// closeWayall(){
// this.polygons[0].points=[{
// latitude: 28.68194 ,
// longitude:115.96191
// }, {
// latitude: 28.68195 ,
// longitude:115.96192
// }, {
// latitude: 28.68196 ,
// longitude:115.96193
// }]
// },
// deleteAnchor(){
// if(this.markers.length !== 1){
// this.markers.pop()
// let arr=[]
// for (let index = 1; index < this.markers.length; index++) {
// arr.push({
// latitude:this.markers[index].latitude,
// longitude: this.markers[index].longitude
// })
// }
// this.option=arr;
// this.closeWayall()
// if(this.option.length > 2){
// this.wayAll()
// }
// }
// }
// },
}
</script>
<style lang="scss" scoped>
.content {
height: 100%;
width: 100%;
position: absolute;
overflow: hidden;
.rightTool {
position: absolute;
right: 30rpx;
top: 30rpx;
.right_tool_item {
background-color: rgba(214, 215, 219, 0.5);
padding: 10rpx 20rpx;
margin-top: 10rpx;
border-radius: 30rpx;
}
}
.sidebar {
position: absolute;
top: 15%;
right: 20rpx;
}
// .toggle,.measure,.zoom{}
.measure {
margin-top: 15rpx;
}
.stakeMark {
margin-top: 15rpx;
}
.stakeMark {
width: 80rpx;
height: 75rpx;
line-height: 75rpx;
font-size: 25rpx;
text-align: center;
background-color: white;
color: #146bee;
border-radius: 7rpx;
font-weight: 700;
}
.zoom {
margin-top: 50rpx;
border-radius: 7rpx;
}
.orientation {
width: 80rpx;
height: 75rpx;
line-height: 75rpx;
font-size: 25rpx;
background-color: white;
text-align: center;
border-radius: 7rpx;
margin-top: 20rpx;
}
.callout-content {
position: absolute;
background-color: #fff;
padding: 15rpx;
font-size: 16rpx;
border-radius: 7%;
cover-view {
margin: 15rpx;
}
}
.generationRegion {
width: 80%;
position: absolute;
bottom: 10%;
left: 10%;
}
}
</style>