NONGJINGQUANXIAOCHENGXU/pages/outmap/index.js

140 lines
4.4 KiB
JavaScript
Raw Normal View History

2025-03-24 10:28:28 +08:00
const { $Toast } = require('../../dist/base/index');
Component({
behaviors: [],
properties: {},
data: {
cbfbm: '',
dkList: [],
dkDetails: {},
longitude: '',
latitude: '',
polygons: [{
points: [],//给个空数组在页面刚开始渲染的时候会报错,但是不影响使用
fillColor: "#ffff00",
strokeColor: "#00B277",
strokeWidth: 2,
zIndex: 1
}]
}, // 私有数据,可用于模板渲染
lifetimes: {
// 生命周期函数,可以为函数,或一个在 methods 段中定义的方法名
attached: function () {
this.cbfbm = getApp().globalData.cbfbm
this.initMap()
this.getListData()
},
moved: function () { },
detached: function () { },
},
pageLifetimes: {
// 组件所在页面的生命周期函数
show: function () { },
hide: function () { },
resize: function () { },
},
methods: {
initMap(){
let that = this
wx.getLocation({
type: 'gcj02', //返回可以用于wx.openLocation的经纬度
highAccuracyExpireTime:4000,
success: function(res) {
// that.setData({
// longitude: res.longitude,
// latitude: res.latitude
// })
}
})
},
getListData(){
var that = this;
let url = getApp().globalData.API + '/api/LandContract/GetCbfData'
let param = {
cbfbm: this.cbfbm
}
wx.request({
url: url,
data: param,
method: 'GET',
header: {
'content-type': 'application/json' // 默认值
},
success (res) {
let rel = res.data.result.dk_list
let arr = []
let pos = []
that.setData({
dkList: rel,
dkDetails: rel[0]
})
rel.forEach(item =>{
item.point_list.forEach(val =>{
pos.push({
latitude: that.wgs84togcj02(val.lat, val.lng)[0],
longitude: that.wgs84togcj02(val.lat, val.lng)[1]
})
})
arr.push({
points: pos,
fillColor: "rgba(64,246,9,0.6)",
strokeColor: "#00B277",
strokeWidth: 2,
zIndex: 1
})
that.setData({
longitude: that.wgs84togcj02(item.point_list[0].lat, item.point_list[0].lng)[1],
latitude: that.wgs84togcj02(item.point_list[0].lat, item.point_list[0].lng)[0],
})
})
that.setData({
polygons: arr
})
}
})
},
wgs84togcj02(lng, lat) {
let that = this
var circlepi = 3.1415926535897932384626,
lengtha = 6378245.0,lengthee = 0.00669342162296594323
let dlat = this.transformlat(lng - 105.0, lat - 35.0,circlepi)
let dlng = this.transformlng(lng - 105.0, lat - 35.0,circlepi)
let radlat = lat / 180.0 * circlepi
let magic = Math.sin(radlat)
magic = 1 - lengthee * magic * magic
let sqrtmagic = Math.sqrt(magic)
dlat = (dlat * 180.0) / ((lengtha * (1 - lengthee)) / (magic * sqrtmagic) * circlepi)
dlng = (dlng * 180.0) / (lengtha / sqrtmagic * Math.cos(radlat) * circlepi)
let mglat = lat + dlat
let mglng = lng + dlng
return [mglng, mglat]
},
transformlat(lng, lat,circlepi) {
let ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + 0.1 * lng * lat + 0.2 * Math.sqrt(Math.abs(lng))
ret += (20.0 * Math.sin(6.0 * lng * circlepi) + 20.0 * Math.sin(2.0 * lng * circlepi)) * 2.0 / 3.0
ret += (20.0 * Math.sin(lat * circlepi) + 40.0 * Math.sin(lat / 3.0 * circlepi)) * 2.0 / 3.0
ret += (160.0 * Math.sin(lat / 12.0 * circlepi) + 320 * Math.sin(lat * circlepi / 30.0)) * 2.0 / 3.0
return ret
},
transformlng(lng, lat,circlepi) {
let ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + 0.1 * lng * lat + 0.1 * Math.sqrt(Math.abs(lng))
ret += (20.0 * Math.sin(6.0 * lng * circlepi) + 20.0 *
Math.sin(2.0 * lng * circlepi)) * 2.0 / 3.0
ret += (20.0 * Math.sin(lng * circlepi) + 40.0 *
Math.sin(lng / 3.0 * circlepi)) * 2.0 / 3.0
ret += (150.0 * Math.sin(lng / 12.0 * circlepi) + 300.0 *
Math.sin(lng / 30.0 * circlepi)) * 2.0 / 3.0
return ret
},
dkclick(e){
this.setData({
dkDetails: e.currentTarget.dataset.url
})
},
}
})