coordtransform官方库:coordtransform - npm
小程序开发过程中有遇到使用后端或者官方api返回的经纬度直接使用,但在实际底图上显示时会有偏移的情况。这时因为各个平台使用的坐标系不同二导致的,这种情况下可通过使用coordtransform库来进行经纬度转换
一、经纬度转换
1、下载coordtransform库依赖
npm i coordtransform
2、引入依赖
var coordtransform = require('coordtransform')
bd09togcj02 百度经纬度坐标转国测局坐标
gcj02tobd09 国测局坐标(火星坐标)转百度经纬度坐标
wgs84togcj02 wgs84转国测局坐标
gcj02towgs84 国测局坐标(火星坐标)转wgs84坐标
3、坐标转换
const gpsCheck = (type = 'gcj02tobd09') => {
let result = []
switch (type) {
case 'bd09togcj02':
//百度经纬度坐标转国测局坐标
result = coordtransform.bd09togcj02('经度', '纬度')
break
case 'gcj02tobd09':
//国测局坐标(火星坐标)转百度经纬度坐标
result = coordtransform.gcj02tobd09('经度', '纬度')
break
case 'wgs84togcj02':
//wgs84转国测局坐标
result = coordtransform.wgs84togcj02('经度', '纬度')
break
case 'gcj02towgs84':
//国测局坐标(火星坐标)转wgs84坐标
result = coordtransform.gcj02towgs84('经度', '纬度')
break
default:
break
}
}
二、使用百度api进行逆地址解析
1、引用百度底图
<script type="text/javascript" src="【ak】"></script>
2、地址解析
result 为经纬度信息为第一节第3步中转换后的经纬度信息
const point = new BMap.Point(result[0], result[1])
const gc = new BMap.Geocoder()
gc.getLocation(point, res => {
// 解析出来的位置信息
})
三、使用高德地图api
1、微信小程序小程序中使用
1.1 下载高德微信小程序插件
1.2 在项目中使用
/**
* @param {String|Number} lat 纬度
* @param {String|Number} lng 经度
*/
export const getUserCurrentLocationInfo = (lat, lng) => {
// 引入高德微信小程序插件资源文件
var GDMapWX = require('../assets/GD/amap-wx.js');
var GDMapSdk = new GDMapWX.AMapWX({
key: '在高德开发平台申请的key' // 必填
});
return new Promise((resolve, reject) => {
GDMapSdk.getRegeo({
location: lng + ',' + lat,
success: res => {
console.log(res, 'res--res');
let info = res[0]?.regeocodeData?.addressComponent || null
if (info) {
resolve(info)
} else {
reject()
}
},
fail: function(error) {
reject()
}
})
})
}