我们在做移动端开发的时候,经常需要用到根据用户的 IP 地址,来自动定位用户所在的城市。
在这里将 demo 记录下来,分享给大家,主要调用百度地图 API 。
后端框架:node.js
调用的百度地图 api 接口:
http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll // HTTP协议 https://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll // HTTPS协议
1. npm 安装 request、querystring:
npm install request
npm install querystring
2. 封装成函数
// ip 定位城市 | 使用百度地图 API ipLocation(clientIp) { let basicuri = 'http://api.map.baidu.com/location/ip?'; const baiduMapParams = { ip: clientIp, ak: '...' //注册百度地图开放平台即可得到AK(开发密钥) }; let queryData = querystring.stringify(baiduMapParams); let queryUrl = basicuri + queryData; return new Promise((resolve, reject) => { request(queryUrl, function(error, response, body) { if (!error && response.statusCode == 200) { // 解析接口返回的JSON内容 let newBody = JSON.parse(body); resolve(newBody); } else { reject({ code: -1, err_msg: 'ip 定位请求异常' }); } }); }); }
3. 返回的数据中得到 城市字段:
const locationData = await tools.ipLocation(clientIp); //方法封装在tools类中 const locCity = locationData.content.address_detail.city;
locCity 即为 ip 地址对应的城市信息
附:接口返回结果: