Vue 调用高德地图无法使用定位权限

注意:
1.我使用的是cli3.x搭建的项目。
2.注册高德地图和拿高德地图的key值我就不说了。 需要的自己上网搜一下吧。

1.拿到高德key值之后,在vue中的public文件夹–>index文件中引入这么一段代码:

把你自己申请下来key值放到下面链接的key=后面就OK了
在这里插入图片描述

<script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&key=您申请的key值"></script> 

然后到App.vue中创建方法,一开始我按照高德地图JS API 中的定位进行测试的代码:这个是在App文件中啊。

<template>
  <div id="app">
    <router-view/>
  </div>
</template>
<script>
export default {
  name: "app",
  created() {
    this.getLocation();
  },
  methods: {
    getLocation() {
      AMap.plugin("AMap.Geolocation", function() {
        var geolocation = new AMap.Geolocation({
          // 是否使用高精度定位,默认:true
          enableHighAccuracy: true,
          // 设置定位超时时间,默认:无穷大
          timeout: 10000,
          // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
          buttonOffset: new AMap.Pixel(10, 20),
          //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
          zoomToAccuracy: true,
          //  定位按钮的排放位置,  RB表示右下
          buttonPosition: "RB"
        });

        geolocation.getCurrentPosition();
        AMap.event.addListener(geolocation, "complete", onComplete);
        AMap.event.addListener(geolocation, "error", onError);

        function onComplete(data) {
          // data是具体的定位信息
          console.log(data,“成功”)
        }

        function onError(data) {
          // 定位出错
          console.log(data,“失败”)
        }
      });
    }
  }
};
</script>

输出结果:
在这里插入图片描述
由于谷歌浏览器禁止了非安全域的定位请求。所以会报这个错。
还是在App文件中写入:IP定位获取当前城市信息方法

<template>
  <div id="app">
    <router-view/>
  </div>
</template>
<script>
export default {
  name: "app",
  created() {
    this.getLocation();
  },
  methods: {
    getLocation() {
      const that = this;
      AMap.plugin("AMap.Geolocation", function() {
        var geolocation = new AMap.Geolocation({
          // 是否使用高精度定位,默认:true
          enableHighAccuracy: true,
          // 设置定位超时时间,默认:无穷大
          timeout: 10000,
          // 定位按钮的停靠位置的偏移量,默认:Pixel(10, 20)
          buttonOffset: new AMap.Pixel(10, 20),
          //  定位成功后调整地图视野范围使定位位置及精度范围视野内可见,默认:false
          zoomToAccuracy: true,
          //  定位按钮的排放位置,  RB表示右下
          buttonPosition: "RB"
        });

        geolocation.getCurrentPosition();
        AMap.event.addListener(geolocation, "complete", onComplete);
        AMap.event.addListener(geolocation, "error", onError);

        function onComplete(data) {
          // data是具体的定位信息
          console.log(data);
        }

        function onError(data) {
          // 定位出错
          console.log(data);
          // 失败之后调用这个方法,使用IP定位获取当前城市信息
          that.getLngLatLocation();
        }
      });
    },
    // IP定位获取当前城市信息
    getLngLatLocation() {
      AMap.plugin("AMap.CitySearch", function() {
        var citySearch = new AMap.CitySearch();
        citySearch.getLocalCity(function(status, result) {
          if (status === "complete" && result.info === "OK") {
            // 查询成功,result即为当前所在城市信息
            console.log(result)
          }
        });
      });
    }
  }
};
</script>

输出结果:
在这里插入图片描述

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在Vue使用高德地图实现导航,首先需要引入高德地图的JavaScript API。可以通过在Vue项目中的index.html文件中添加以下script标签来引入API: ``` <script src=&quot;https://webapi.amap.com/maps?v=1.4.15&key=your_api_key&quot;></script> ``` 其中,&quot;your_api_key&quot;需要替换为你在高德地图开放平台申请的API密钥。 接下来,在Vue组件中,可以使用AMap对象来创建地图实例以及实现导航功能。 首先,在vue组件的mounted钩子函数中,实例化地图对象: ```javascript mounted() { const map = new AMap.Map(&quot;mapContainer&quot;, { zoom: 15, center: [经度, 纬度] }); } ``` 这里,“mapContainer”是一个div元素的id,用来承载地图。 然后,可以使用AMap对象的Driving类来实现导航功能: ```javascript mounted() { const map = new AMap.Map(&quot;mapContainer&quot;, { zoom: 15, center: [经度, 纬度] }); const driving = new AMap.Driving({ map: map, panel: &quot;naviPanel&quot; }); const startPoint = new AMap.LngLat(起点经度, 起点纬度); const endPoint = new AMap.LngLat(终点经度, 终点纬度); driving.search(startPoint, endPoint, function(status, result) { if (status === 'complete') { console.log('导航搜索成功!'); } else { console.log('导航搜索失败!'); } }); } ``` 在上述代码中,通过实例化Driving类并传入地图对象map和导航结果显示的panel容器的id,然后可以使用search方法进行导航搜索。 需要注意的是,经度和纬度需要根据实际情况进行替换。 最后,在Vue组件的template中,添加地图容器和导航结果容器的代码: ```html <template> <div> <div id=&quot;mapContainer&quot;></div> <div id=&quot;naviPanel&quot;></div> </div> </template> ``` 通过上述步骤,就可以在Vue调用高德地图实现导航功能了。当然,还可以根据具体需求,调整地图的样式和导航的方式等。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值