1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > java 百度地图 经纬度_Java百度地图经纬度纠偏

java 百度地图 经纬度_Java百度地图经纬度纠偏

时间:2020-06-29 07:04:31

相关推荐

java 百度地图 经纬度_Java百度地图经纬度纠偏

在国内使用电子地图获取到的经纬度都不是真实的经纬度,而是经过一定的算法在真实的经纬度上添加了一个偏移量,且不同的地图有不同的算法。现在告诉大家在java中怎样对百度地图进行纠偏,主要实现将真实的经纬度在百度地图上进行显示,消除偏差。

一、若需要消偏的经纬度较少,则直接在浏览器中进行即可,百度提供了相应的API接口

1、API地址:http://api./ag/coord/convert?from=0&to=4&x=113.240324&y=23.817349

from=0:代表传入的是真实经纬度

to=4:代表返回是百度纠偏后,能在百度地图上正确显示出该地址的经纬度

x:经度y:纬度

返回数据:{"error":0,"x":"MTEzLjI1MjIyMjUxOTg1","y":"MjMuODIwNjM5MTEyNDgy"}

返回的数据经过Base64加密,在网上找个在线Base64解密的网站就可以了

二、若数据量较大,则通过上述方式就不方便了,这里提供Java方法进行批量消偏,代码如下:

1 importjava.io.IOException;2 importorg.apache.http.HttpEntity;3 importorg.apache.http.HttpResponse;4 importorg.apache.http.client.ClientProtocolException;5 importorg.apache.http.client.ResponseHandler;6 importorg.apache.http.client.methods.HttpPost;7 importorg.apache.http.impl.client.CloseableHttpClient;8 importorg.apache.http.impl.client.HttpClients;9 importorg.apache.http.util.EntityUtils;10 importnet.sf.json.JSONObject;11

12 public classRemove {13 public static voidmain(String[] args) {14 try{15 //这里只有一条数据,有多条数据的话可以用循环,然后拼接url字符串

16 String url = "http://api./ag/coord/convert?from=0&to=4&x=113.540124&y=23.517846";17 JSONObject json =getAllEmployee(url);18 //将经纬度解码后进行打印

19 String latitude = decode(json.getString("x"));20 String longitude = decode(json.getString("y"));21 System.out.println("经度为:" +latitude);22 System.out.println("纬度为:" +longitude);23 } catch(Exception e) {24 e.printStackTrace();25 }26 }27

28 /**

29 * Java后台访问url链接,返回JSON格式的数据30 *@return

31 */

32 public staticJSONObject getAllEmployee(String url) {33 try{34 CloseableHttpClient httpclient =HttpClients.createDefault();35 HttpPost httpPost = newHttpPost(url);36 ResponseHandler responseHandler = new ResponseHandler() {37 //成功调用连接后,对返回数据进行的操作

38 public JSONObject handleResponse(finalHttpResponse response)39 throwsClientProtocolException, IOException {40 int status =response.getStatusLine().getStatusCode();41 if (status >= 200 && status < 300) {42 //获得调用成功后 返回的数据

43 HttpEntity entity =response.getEntity();44 if (null !=entity) {45 String result =EntityUtils.toString(entity);46 //根据字符串生成JSON对象

47 JSONObject resultObj =JSONObject.fromObject(result);48 returnresultObj;49 } else{50 return null;51 }52 } else{53 throw new ClientProtocolException("Unexpected response status: " +status);54 }55 }56 };57 //返回的json对象

58 JSONObject responseBody =httpclient.execute(httpPost, responseHandler);59 returnresponseBody;60 } catch(Exception e) {61 e.printStackTrace();62 return null;63 }64 }65

66 /**

67 * Base64解码68 *@paramstr69 *@return

70 */

71 public staticString decode(String str) {72 byte[] bt = null;73 String s= "";74 try{75 sun.misc.BASE64Decoder decoder = newsun.misc.BASE64Decoder();76 bt =decoder.decodeBuffer(str);77 s = new String(bt, "GB2312");78 } catch(IOException e) {79 e.printStackTrace();80 }81 returns;82 }83 }

三、运行上述代码所需的jar包如下:

1、/s/1qX7Zipe 密码:0rqq

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。