uniapp 微信小程序开发使用高德地图定位SDK
1.注册高德地图开放平台账号
(1)创建应用
这个key 第3步骤,配置到项目中locationGps.js
2.下载高德地图微信小程序插件
(1)下载地址
高德地图API | 微信小程序插件
(2)引入项目中
3. 创建逆地理编码js文件
(1)locationGps.js
/** 使用第三方地图逆地址解析经纬度获取用户当前所在位置信息
* @param {Number} lat
* @param {Number} lng
*/
export const getUserCurrentLocationInfo = (lat, lng) => {
var GDMapWX = require('../assets/GD/amap-wx.130.js');
var GDMapSdk = new GDMapWX.AMapWX({
key: '' // 必填 高德应用key
});
return new Promise((resolve, reject) => {
GDMapSdk.getRegeo({
location: lng + ',' + lat,
success: res => {
if (res && res.length > 0) {
resolve(res); // 确保返回的结果是一个数组
} else {
reject('No data returned');
}
},
fail: function(error) {
reject(error);
}
});
});
}
(2)存放位置
4. 前端代码
<script>
import {
getUserCurrentLocationInfo
} from "@/utils/locationGps.js"; // 引入函数
data(){
return {
latitude: 0, // 纬度,范围为-90~90,负数表示南纬,使用 gcj02 国测局坐标系
longitude: 0, // 经度,范围为-180~180,负数表示西经,使用 gcj02 国测局坐标系
city: '',
address: '',
}
}
methods:{
// 定位
getLocation() {
// 使用 uni.getLocation 获取经纬度
uni.getLocation({
type: 'gcj02', // 使用国测局坐标系 wgs84
success: (res) => {
console.log('经度:', res.longitude);
console.log('纬度:', res.latitude);
console.log('速度:', res.speed);
console.log('精度:', res.accuracy);
this.latitude = res.latitude;
this.longitude = res.longitude;
this.getLocationInfo(res.latitude, res.longitude);
},
fail: (err) => {
console.error('获取位置失败', err);
}
});
},
// 使用高德地图 API 进行逆地理编码
getLocationInfo(lat, lng) {
getUserCurrentLocationInfo(lat, lng)
.then((res) => {
this.city = res[0].regeocodeData.addressComponent.city || res[0].regeocodeData.addressComponent
.province;
this.address = res[0].regeocodeData.formatted_address;
console.log('城市:', this.city);
console.log('详细地址:', this.address);
})
.catch((error) => {
console.error('逆地理编码失败', error);
});
},
},
mounted() {
this.getLocation();
},