将GPS经纬度格式转换为百度经纬度格式
一般GPS设备获取的经纬度属于WGS84坐标系,这是一个比较通用的坐标体系。由于国防安全的原因国内不能直接使用WGS84坐标,因此百度地图API的经纬度是经过加密偏移的。在利用百度车联网API编写程序时
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
// 将GPS经纬度格式转换为百度经纬度格式 // 转换成功则 Result.Valid := True;使用前先判断该变量 function TfrmMain.GpsToBaiduXY(coords: TCoordinate): TCoordinate; var Url, s: string; node: IXMLNode; XMLDoc: TXMLDocument; IdHTTP: TIdHTTP; begin Url := 'http://api.map.baidu.com/geoconv/v1/?coords=%16.12f,%15.12f&from=1&to=5&output=xml&ak=A4c132a2db250e33cd1e2af37076ac28'; XMLDoc := TXMLDocument.Create(Self); IdHTTP := TIdHTTP.Create; Result.Valid := False; // 请先将ddmm.mmmm格式转成dd.ddddd try Url := Format(Url, [coords.X { 经度 } , coords.Y { 纬度 } ]); try XMLDoc.XML.Text := IdHTTP.Get(Url); XMLDoc.Active := True; if Int(XMLDoc.DocumentElement.ChildValues['status']) = 0 then begin node := XMLDoc.DocumentElement.ChildNodes[1]; Result.X := node.ChildNodes.FindNode('point').ChildValues['x']; Result.Y := node.ChildNodes.FindNode('point').ChildValues['y']; Result.Valid := True; end else begin Result.X := -1; Result.Y := -1; Result.Valid := False; end; except abort; end; finally XMLDoc.Free; IdHTTP.Free; end; end; |