在index.html文件中引入高德js文件:
key 需要从高德获取 获取key
<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=f77da011880c2d55aeccba6446b85c78"></script>
js文件
我将方法写入了单独的js文件:
locationService.js
import AMap from 'AMap'
export const locationService = {
getUserPosition: () => {
return new Promise((resolve, reject) => {
const options = {
enableHighAccuracy: true,//是否使用高精度定位,默认:true
timeout: 10000, //超过10秒后停止定位,默认:5s
buttonPosition: 'RB', //定位按钮的停靠位置
// maximumAge: 0, // 定位结果缓存0毫秒,默认:0
// convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true
showButton: true, // 显示定位按钮,默认:true
buttonOffset: new AMap.Pixel(10, 20), // 定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
// showMarker: true, // 定位成功后在定位到的位置显示点标记,默认:true
// showCircle: true, // 定位成功后用圆圈表示定位精度范围,默认:true
// panToLocation: true, // 定位成功后将定位到的位置作为地图中心点,默认:true
zoomToAccuracy: true, // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
}
AMap.plugin(['AMap.Geolocation'], () => {
var geolocation = new AMap.Geolocation(options);
geolocation.getCurrentPosition()
AMap.event.addListener(geolocation, 'complete', (result) => locationService.onComplete(result, resolve, reject))
AMap.event.addListener(geolocation, 'error', (err) => locationService.onError(err, resolve, reject))
});
});
},
onComplete: (result, resolve, reject) => {
const { lng, lat } = result.position;
window.latitude = lat;
window.longitude = lng;
resolve({
lat,
lng
})
},
one rror: (err, resolve, reject) => {
reject(err)
}
};
使用:
import { locationService } from '@/services/locationService';
locationService.getUserPosition().then(result => {
console.log('result---location', result)
const { lat, lng } = result;
setTimeout(function () {
// 执行后续操作
}, 1000)
}).catch(err => {
console.log('location err:', err)
message.error('获取定位失败')
})