vue项目中使用高德地图JS API进行精确定位并获取定位信息

vue项目中使用高德地图JS API进行精确定位并获取定位信息

注册账号并申请Key

  1. 首先,注册开发者账号,成为高德开放平台开发者

  2. 登陆之后,在进入「应用管理」 页面「创建新应用」
    在这里插入图片描述

  3. 为应用添加 Key,「服务平台」一项请选择「 Web 端 ( JSAPI ) 」
    在这里插入图片描述
    这一步不是很难,应该很快就搞定了.

应用

1. 在页面添加 JS API 的入口脚本标签,并将其中「您申请的key值」替换为您刚刚申请的 key;

因为咱们是vue项目所以直接在index.html中引用就行

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.15&key=您申请的key值"></script>
2.使用JS API 进行定位

简单粗暴,咱们直接上代码吧

<template>
    <div class="mapPosition">
        <div class="map-title">
           <p class="title">地图位置定位</p>
           <div class="positionInfo"><span>位置信息:</span><span>{{positionInfo.formattedAddress?positionInfo.formattedAddress:'未获取位置信息'}}</span></div>
        </div>
        <div id="iCenter"></div>
    </div>
</template>
<script>
export default {
    name:'mapPosition',
    data(){
        return{
            positionInfo:{},
        }
    },
    mounted(){
        this.initMap()
    },
    methods:{
        initMap(){
            var mapObj = new AMap.Map('iCenter');//以为这里是要获取地图容器的id,所以要写在mounted之中
            var geolocation
            var that = this
            mapObj.plugin('AMap.Geolocation', function () {
                geolocation = new AMap.Geolocation({
                    enableHighAccuracy: true, // 是否使用高精度定位,默认:true
                    timeout: 10000,           // 超过10秒后停止定位,默认:无穷大
                    maximumAge: 0,            // 定位结果缓存0毫秒,默认:0
                    convert: true,            // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true
                    showButton: true,         // 显示定位按钮,默认:true
                    buttonPosition: 'LB',     // 定位按钮停靠位置,默认:'LB',左下角
                    buttonOffset: new AMap.Pixel(10, 20), // 定位按钮与设置的停靠位置的偏移量,默认:Pixel(10, 20)
                    showMarker: true,         // 定位成功后在定位到的位置显示点标记,默认:true
                    showCircle: true,         // 定位成功后用圆圈表示定位精度范围,默认:true
                    panToLocation: true,      // 定位成功后将定位到的位置作为地图中心点,默认:true
                    zoomToAccuracy:true       // 定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
                });
                mapObj.addControl(geolocation);
                geolocation.getCurrentPosition();
                AMap.event.addListener(geolocation, 'complete', that.onComplete); // 返回定位信息
                AMap.event.addListener(geolocation, 'error', that.onError);       // 返回定位出错信息
            });
        },
        onComplete(obj){
            this.positionInfo = obj
            var res = '经纬度:' + obj.position + 
                '\n精度范围:' + obj.accuracy + 
                '米\n定位结果的来源:' + obj.location_type + 
                '\n状态信息:' + obj.info + 
                '\n地址:' + obj.formattedAddress + 
                '\n地址信息:' + JSON.stringify(obj.addressComponent, null, 4);
            console.log(this.positionInfo)
            console.log(res);
        },
        onError(obj) {
            alert(obj.info + '--' + obj.message);
            console.log(obj);
        },
    }
}
</script>
<style lang="scss" scoped>
.mapPosition{
    width: 100%;
    height: 100%;
    .map-title{
        .title{
            height: 60px;
            line-height: 60px;
            font-size: 28px;
        }
        .positionInfo{
            height: 50px;
            span{
                display: inline-block;
                height: 30px;
                line-height: 30px;
                font-size: 21px;
            }
        }
    }
    #iCenter{
        width: 80%;
        height: 600px;
        margin: 0 auto;
    }
}
</style>

注意:一定要为地图容器指定高度、宽度,否则地图容器没有高宽地图是不显示的.
生成地图的就是逻辑要在页面元素加载完成后,所以要把生成地图逻辑写在mounted中,否则获取不到地图容器id生成不了地图.

效果图:
在这里插入图片描述

一步步来你一定没问题,希望对你有帮助,欢迎评论一起讨论.

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
要在Vue2使用高德地图对地图添加GPS定位,可以按照以下步骤进行: 1. 首先,在Vue项目引入高德地图JavaScript API的SDK,并在页面添加地图容器。 2. 在Vue组件使用AMap对象的定位插件AMap.Geolocation获取用户的位置信息,并将地图心移动到用户当前位置。 以下是示例代码: ``` <template> <div id="map-container"></div> </template> <script> export default { mounted() { // 初始化地图对象 const map = new AMap.Map('map-container', { zoom: 14 }); // 使用定位插件获取用户位置信息 map.plugin('AMap.Geolocation', function() { const geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认:true timeout: 10000, // 超过10秒后停止定位,默认:无穷大 maximumAge: 0, // 定位结果缓存0毫秒,默认:0 convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认:true showButton: true, // 显示定位按钮,默认:true buttonPosition: 'LB', // 定位按钮停靠位置,默认:'LB',左下角 buttonOffset: new AMap.Pixel(10, 60), // 定位按钮距离容器底部/右侧的像素距离,默认:Pixel(10, 20) showMarker: true, // 定位成功后在定位到的位置显示点标记,默认:true showCircle: true, // 定位成功后用圆圈表示定位精度范围,默认:true panToLocation: true, // 定位成功后将定位到的位置作为地图心点,默认:true zoomToAccuracy: true // 定位成功后自动调整地图缩放级别以适应定位精度范围,默认:true }); map.addControl(geolocation); geolocation.getCurrentPosition(function(status, result) { if (status === 'complete') { // 定位成功,将地图心移动到用户当前位置 map.setCenter([result.position.lng, result.position.lat]); } else { // 定位失败 console.log('定位失败'); } }); }); } } </script> ``` 在上面的示例代码,我们首先初始化了一个地图对象,然后在组件的mounted生命周期函数使用AMap.Geolocation插件获取用户位置信息,并将地图心移动到用户当前位置。注意,需要在组件引入高德地图JavaScript API SDK,并在页面添加地图容器。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值