vue调用百度地图定位api

本文介绍了如何在Vue项目中注册并使用百度地图API,包括获取AK,设置请求路径,处理跨域问题以及在Vue中发送请求获取IP定位信息的过程。通过配置Vue的proxyTable解决跨域,然后展示了一个成功的请求示例,返回包含IP地址的详细地理位置信息。

一、去百度地图开放平台注册账号,然后创建ak
在这里插入图片描述
二、可以再平台中找到api的文档
这里是请求的路径

http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll

https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll

参数只有ak是必填

三、如果直接用上面的路径去请求,正常情况下会出现跨域
接下来就要处理跨域问题了

跨域可以在vue项目中的config目录下的index文件中配置

proxyTable: {
  "/api": {
    target: "http://api.map.baidu.com", // 请求的第三方接口
    changeOrigin: true, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,解决跨域问题
    pathRewrite: {
      "^/api": "" // 替换target中的请求地址。
    }
  }
},

四、接下来就可以请求数据了

this.$axios
  .get("/api/location/ip", {
    params: {
      ak: 我的ak,
      coor: "bd09ll"
    }
  })
  .then(res=>{
    console.log(res);
  })
  .catch(err=>{
    console.log(err);
  });

最后会根据你的IP返回给你数据

结果示例:

{  
    address: "CN|北京|北京|None|CHINANET|1|None",    #详细地址信息  
    content:    #结构信息  
    {  
        address: "北京市",    #简要地址信息  
        address_detail:    #结构化地址信息  
        {  
            city: "北京市",    #城市  
            city_code: 131,    #百度城市代码  
            province: "北京市",    #省份      
        },  
        point:    #当前城市中心点  
        {  
            x: "116.39564504",    #当前城市中心点经度
            y: "39.92998578"    #当前城市中心点纬度
        }  
    },  
    status: 0    #结果状态返回码  
}
Vue 应用中集成百度地图 API 获取用户当前位置,可以通过动态加载 BMap 脚本并结合 Promise 实现异步加载和调用地理位置服务。以下是实现步骤和代码示例: ### 1. 获取百度地图 AK 密钥 首先,在 [百度地图开放平台](https://lbsyun.baidu.com/) 注册账号并创建应用,获取 `ak`(访问密钥)[^1]。 --- ### 2. 动态加载 BMap 脚本并封装为 Promise 创建一个 `map.js` 文件,用于封装百度地图 API 的加载逻辑: ```javascript // map.js export function loadBMap(ak) { return new Promise((resolve, reject) => { if (typeof BMap !== 'undefined') { resolve(BMap); return; } window.onBMapCallback = function () { resolve(BMap); }; const script = document.createElement('script'); script.type = 'text/javascript'; script.src = `https://api.map.baidu.com/api?v=2.0&ak=${ak}&callback=onBMapCallback`; script.onerror = reject; document.head.appendChild(script); }); } ``` --- ### 3.Vue 组件中使用 BMap 获取当前位置 在 Vue 组件中引入封装好的 `loadBMap` 方法,并调用百度地图 API 获取当前位置信息: ```vue <template> <div> <p>当前位置城市:{{ city }}</p> </div> </template> <script> import { loadBMap } from '@/utils/map.js'; // 根据实际路径调整 export default { data() { return { city: '', ak: '你的百度地图AK' // 替换为实际 AK }; }, mounted() { this.getCurrentPosition(); }, methods: { async getCurrentPosition() { try { const BMap = await loadBMap(this.ak); const geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition((result) => { if (geolocation.getStatus() === BMAP_STATUS_SUCCESS) { this.city = result.address.city; } else { console.error('获取位置失败'); } }); } catch (error) { console.error('加载百度地图API失败', error); } } } }; </script> ``` --- ### 4. 注意事项 - 确保在百度地图开放平台中配置了正确的域名白名单,否则可能会出现跨域问题。 - 百度地图 API 是异步加载的,因此必须通过 `Promise` 或 `async/await` 控制加载顺序。 - 若需获取更详细的地址信息(如行政区划、经纬度等),可进一步调用 `result.address` 中的其他字段。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值