点击2023优化版
项目需求是:获取到当前城市定位,然后显示该城市的服务项
之前做了一版百度地图,因为商业原因,公司选择了高德地图,所以要对地图进行更换。百度地图原生点这里加粗样式
也不算顺利,之前做的记录都不存在了。
vue-amap是基于高德原生封装好的供vue使用,对图层的操作会更便捷一些。vue-amap点这里
当前的需求,只需拿到当前定位。所以可以使用原生js
<script type="text/javascript" src="https://webapi.amap.com/maps?v=2.0&key=你的key&plugin=AMap.Geolocation"></script>
externals: {
// 'BMap':"BMap",
AMap: 'AMap', // 高德地图配置
AMapUI: 'AMapUI'
}
getAmap(){
const that = this;
AMap.plugin("AMap.Geolocation", () => {
var geolocation = new AMap.Geolocation({
// 是否使用高精度定位,默认:true
enableHighAccuracy: true,
//是否使用安卓定位sdk用来进行定位,需要安卓端sdk配合
useNative: true,
// 设置定位超时时间,默认:无穷大
timeout: 10000,
});
geolocation.getCurrentPosition((status, result) => { //获取用户当前的精确位置
if (status == "complete") {
that.showCode = result.adcode.substring(0, 4)
if (that.showCode.length === 4) {
this.surePosition(result.position[0],result.position[1])
} else {
that.showCity = '未获取定位'
that.getServiceType(0)
}
}
else {
geolocation.getCityInfo((status, result) => { //只能获取当前用户所在城市和城市的经纬度
if (status == "complete") {
this.surePosition(result.position[0],result.position[1])
}else {
that.showCity = '未获取定位'
that.getServiceType(0)
}
})
}
})
})
},
surePosition(re0,re1){
const that = this;
let key='你的key'
axios.get(`https://restapi.amap.com/v3/geocode/regeo?key=${key}&location=${re0+','+re1}&extensions=all`)
.then( (response) => {
console.log('response'+response.data)
if(response.data.status){
} else {
that.showCity = '未获取定位'
}
}
})
},