• DELPHI调用百度定位API(根据IP获取城市及GPS信息等)


    缘由:因智能助理在用户说出“天气如何”时,需要自动获取城市,所以这里需要根据用户IP自动获取城市,所以有了这篇文章 QQ508882988

    //根据百度API,根据来访IP自动获取出该IP所在的位置及更多信息,参数IP为空时,会使用当前访问者的IP地址作为定位参数
    //sServerAK为用户密钥 string 必选,在lbs云官网注册的access key,作为访问的依据,定期从http://lbsyun.baidu.com/apiconsole/key获取
    //参考http://lbsyun.baidu.com/index.php?title=webapi/ip-api#.E6.9C.8D.E5.8A.A1.E5.9C.B0.E5.9D.80
    //function GetLocInfByIP_BaiDu(sIP, sServerAK: string): string;

    uses SuperObject; 

    function GetLocInfByIP_BaiDu(sIP, sServerAK: string): string;
      var sUrl, ak, sIPS, sR: string;
      vJson, vj: ISuperObject;
      response: TStringStream;
      FHttp: TIdHTTP;
    begin
      sR := '';
      ak := '9fe55cc6597c6b331754b19a048accd4';
      if sIP <> '' then begin
        sIPS := '&ip='+ sIP;
      end else begin
        sIPS := '';
      end;

      sUrl := 'http://api.map.baidu.com/location/ip?ak='+sServerAK + sIPS;
      response := TStringStream.create('', tencoding.utf8);
      FHttp := TIdHttp.Create(nil);
      sR := FHttp.Post(sUrl, response);
      FHttp.Free;
      vJson := SO((sr));

      //我这里只用到城市,所以如下取出,各位客官可自行根据情况获取
      result := SO(SO(vJson.S['content']).S['address_detail']).S['city'];
    end;

    返回的结果json串形如下:

      {  
            address: "CN|北京|北京|None|CHINANET|1|None",   #地址  
            content:       #详细内容  
            {  
            address: "北京市",   #简要地址  
            address_detail:      #详细地址信息  
            {  
            city: "北京市",        #城市  
            city_code: 131,       #百度城市代码  
            district: "",           #区县  
            province: "北京市",   #省份  
            street: "",            #街道  
            street_number: ""    #门址  
            },  
            point:               #百度经纬度坐标值  
            {  
            x: "116.39564504",  
            y: "39.92998578"  
            }  
            },  
            status: 0     #返回状态码  
        }
  • 相关阅读:
    下定决心
    SPFA
    Linux下一些常用的命令
    如何设计符合RESTful风格的API
    django中的第三方:富文本编辑器和itsdangerous加密
    redis主从
    redis集群
    django中关联(一对多)查询的两种方式,理一理
    关于Django中的迁移文件
    日常工作中Git的正确使用姿势
  • 原文地址:https://www.cnblogs.com/fireboxsoft/p/5654987.html
Copyright © 2020-2023  润新知