JS 根据IP地址定位城市 | 使用百度地图API

我们在做移动端开发的时候,经常需要用到根据用户的 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 地址对应的城市信息

 

附:接口返回结果:

 

posted @ 2020-08-19 15:56  几行  阅读(1510)  评论(0编辑  收藏  举报