实现nuxt2中基于JSONP库请求腾讯地图开放接口完整代码
地图开发
2025-10-17 00:15:34
腾讯地图开放API是前端开发中最常见的地图API,那么我们在开发中如何使用地图接口呢?
本篇文章就来详细告诉你,在nuxt2框架中如何使用JSONP库实现请求腾讯地图开发api获取数据。
一、安装 JSONP 库
npm install jsonp
# 或
yarn add jsonp二、创建jsonp.js插件
2.1、在plugins文件夹中创建jsonp.js文件并写入如下代码
2.2、jsonp.js中需要把“您的腾讯地图KEY”替换为你在腾讯地图开放平台申请的KEY
// plugins/jsonp.js
import jsonp from 'jsonp'
export default function (context, inject) {
// 只在客户端执行
if (process.client) {
class TencentMapJSONP {
constructor(config) {
this.config = config
this.baseUrl = 'https://apis.map.qq.com'
}
// 统一的 JSONP 请求方法
request(endpoint, params = {}) {
return new Promise((resolve, reject) => {
// 构建参数
const requestParams = {
...params,
key:'您的腾讯地图KEY' ,
output: 'jsonp'
}
// 构建查询字符串
const queryString = Object.keys(requestParams)
.map(key => `${encodeURIComponent(key)}=${encodeURIComponent(requestParams[key])}`)
.join('&')
const url = `${this.baseUrl}${endpoint}?${queryString}`
// 发送 JSONP 请求
jsonp(url, {
param: 'callback',
timeout: 15000,
prefix: 'tencent_map_callback_'
}, (err, data) => {
if (err) {
reject(this.handleError(err))
} else {
resolve(data)
}
})
})
}
// 错误处理
handleError(error) {
if (error instanceof Error) {
switch (error.message) {
case 'Timeout':
return new Error('请求超时,请检查网络连接')
case 'Network Error':
return new Error('网络错误,请检查网络连接')
default:
return error
}
}
return error
}
// 验证响应数据
validateResponse(data) {
if (!data) {
throw new Error('返回数据为空')
}
return data
}
// 通用封装请求方法
async jsonpHttp(url, options = {}) {
try {
const data = await this.request(url, {
...options
})
return this.validateResponse(data)
} catch (error) {
throw error
}
}
}
// 获取配置
const config = context.$config || context.env || {}
// 注入服务
const service = new TencentMapJSONP(config)
inject('tencentMap', service)
}
}三、配置nuxt.config.js
plugins: [
...
{src: '~plugins/jsonp.js'}
...
],四、页面中使用封装好的jsonp方法
4.1、如请求IP解析详细定位信息
let res = await this.$tencentMap.jsonpHttp('/ws/location/v1/ip',{
ip:''
})4.2、请求结果格式如下
{
"status": 0,
"message": "Success",
"request_id": "3f342356fb8a44bc99d8ea6db2b6155d",
"result": {
"ip": "240e:398:256:d720:4631:3447:d3e5:90de",
"location": {
"lat": 30.69215,
"lng": 104.05193
},
"ad_info": {
"nation": "中国",
"province": "四川省",
"city": "成都市",
"district": "金牛区",
"adcode": 510106,
"nation_code": 156
}
}
}五、关于地图工具说明
六月初工具站提供种类齐全的地图工具,测试使用可以放心使用。点击快捷进入“六月初工具站”
六月初字帖坊小程序
你想要的字帖模板及工具,这里都有!
894篇文章
135人已阅读
六月初