delphi 调用百度地图WEBSERVICE转换GPS坐标
百度地图的API说明
使用方法
第一步,申请密钥(ak),作为访问服务的依据;
第二步,按照请求参数说明拼写发送http请求的url,注意需使用第一步申请的ak;
第三步,接收返回的数据(json或者xml格式)。
注:本接口支持回调。
服务地址
http://api.map.baidu.com/geoconv/v1/?
组成说明:
- 域名:http://api.map.baidu.com
- 服务名:geoconv
- 服务版本号:v1
服务参数说明
参数 | 含义 | 取值范围 | 是否必须 | 默认取值 |
---|---|---|---|---|
coords | 源坐标 |
格式:经度,纬度;经度,纬度…
限制:最多支持100个 格式举例: 114.21892734521,29.575429778924; 114.21892734521,29.575429778924 |
是 | 无 |
ak | 开发者密钥 | 是 | 无 | |
sn | 用户的权限签名 | 否 | 若用户所用ak的校验方式为sn校验时该参数必须。 (sn生成算法) | |
from | 源坐标类型 |
取值为如下: 1:GPS设备获取的角度坐标; 2:GPS获取的米制坐标、sogou地图所用坐标; 3:google地图、soso地图、aliyun地图、mapabc地图和amap地图所用坐标 4:3中列表地图坐标对应的米制坐标 5:百度地图采用的经纬度坐标 6:百度地图采用的米制坐标 7:mapbar地图坐标; 8:51地图坐标 |
否 | 默认为1,即GPS设备获取的坐标 |
to | 目的坐标类型 |
有两种可供选择:5、6。 5:bd09ll(百度经纬度坐标), 6:bd09mc(百度米制经纬度坐标); |
否 | 默认为5,即bd09ll(百度坐标) |
output | 返回结果格式 |
json或者xml |
否 | json |
返回值说明
名称 | 类型 | 含义 | 取值范围 | |
---|---|---|---|---|
status | init | 状态码 | 正常0,异常非0,详细见状态码说明 | |
result | json或者xml数组 | 转换结果 | 与输入顺序一致 | |
x | float | 横坐标 | ||
y | float | 纵坐标 |
delphi 的调用过程
procedure GpsToBaiDu(Gx,Gy:real;var Bx,By:real);
const
urs1='http://api.map.baidu.com/geoconv/v1/?coords=';
urs2='&&ak=你的秘钥';//两个&&
var
url:string;
ts:Tstringstream;
jo: ISuperObject;
xy: TSuperArray;
begin
url:=urs1+floattostr(Gx)+','+floattostr(Gy)+urs2;
ts:=Tstringstream.Create;
try
IdHTTP1.Get(url,ts);
ts.Position:=0;
jo:=so(ts.DataString);
xy:=jo['result'].AsArray;
jo:=so(xy[0].AsString);
Bx:=jo['x'].AsDouble;
By:=jo['y'].AsDouble;
except //转换失败
Bx:=gx;
By:=gy;
exit;
end;
end;