zoukankan      html  css  js  c++  java
  • 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 地址对应的城市信息

    附:接口返回结果:

  • 相关阅读:
    bzoj 4034 [HAOI2015]树上操作——树链剖分
    bzoj 1179 [Apio2009]Atm——SCC缩点+spfa
    bzoj 1123 [POI2008]BLO——点双连通分量
    poj1830开关问题——异或高斯消元
    bzoj2004公交线路——DP+矩阵加速递推
    bzoj2875随机数生成器——矩阵快速幂
    Splay模板
    map插入与查找
    bzoj1013高斯消元
    bzoj2257瓶子与燃料——最大公约数
  • 原文地址:https://www.cnblogs.com/Fcode-/p/13529251.html
Copyright © 2011-2022 走看看