vue3 引入腾讯地图解决请求接口https://apis.map.qq.com/ws/place/v1/suggestion跨域问题

试过npm i vue-jsonp不行,然后重新试了这个办法解决了

index.html 中引入

<script charset="utf-8" src="https://map.qq.com/api/gljs?v=1.exp&key=自己申请的key"></script>

 重写 jsonp,就不用在项目中安装 jsonp 了

export const jsonp = function (url, data) {
  return new Promise((resolve, reject) => {
    // 1.初始化url
    let dataString = url.indexOf('?') === -1 ? '?' : '&'
    let callbackName = `jsonpCB_${Date.now()}`;
    url += `${dataString}callback=${callbackName}`
    if (data) {
 
      // 2.有请求参数,依次添加到url
      for (let k in data) {
        url += `&${k}=${data[k]}`
      }
    }
 
    let scriptNode = document.createElement('script');
    scriptNode.src = url;
 
    // 3. callback
    window[callbackName] = (result) => {
      result ? resolve(result) : reject('没有返回数据');
      delete window[callbackName];
      document.body.removeChild(scriptNode);
    }
 
    // 4. 异常情况
    scriptNode.addEventListener('error', () => {
      reject('接口返回数据失败');
      delete window[callbackName];
      document.body.removeChild(scriptNode);
    }, false)
 
    // 5. 开始请求
    document.body.appendChild(scriptNode)
  })
}

使用:

// 引入重写的jsonp文件
import { jsonp } from '../../common/jsonp/jsonp.js'
 
// 使用
const onSearch = () => {
    let url = 'https://apis.map.qq.com/ws/...';
    jsonp(url, {
        key: 'key',
        output: 'jsonp',
        ...
    }).then(res => {
       ...
    })
}

  • 11
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
当你使用 Vue.js 开发前端应用时,可以通过 `jsonp` 库来发送跨域请求获取腾讯地图的数据。以下是一个示例代码: 1. 首先,确保你已经安装了 Vue.js 和 jsonp 库。可以使用以下命令进行安装: ``` npm install vue jsonp ``` 2. 创建一个 Vue 组件,比如 `MapSearch.vue`,然后在组件内部编写以下代码: ```vue <template> <div> <input type="text" v-model="keyword" placeholder="请输入关键词" /> <button @click="search">搜索</button> <ul> <li v-for="item in suggestions" :key="item.id">{{ item.title }}</li> </ul> </div> </template> <script> import jsonp from 'jsonp'; export default { data() { return { keyword: '', suggestions: [] } }, methods: { search() { const url = 'https://apis.map.qq.com/ws/place/v1/suggestion/'; const params = { keyword: this.keyword, key: 'YOUR_API_KEY' // 替换为你的腾讯地图 API 密钥 }; jsonp(url, params, (err, data) => { if (err) { console.error(err); } else { this.suggestions = data.data; } }); } } } </script> ``` 在上述代码中,我们通过 `jsonp` 函数发送 JSONP 请求腾讯地图API 地址,并传递关键词和 API 密钥作为查询参数。返回的结果将会更新到 `suggestions` 数组中,然后在模板中使用 `v-for` 指令渲染搜索建议列表。 请注意,你需要将 `'YOUR_API_KEY'` 替换为你自己的腾讯地图 API 密钥,你可以在腾讯地图开放平台申请一个密钥。 这是一个简单的示例,你可以根据自己的需求进行修改和扩展。希望可以帮助到你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LXXgalaxy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值