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

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

1、API地址:http://api.map.baidu.com/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.map.baidu.com/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、http://pan.baidu.com/s/1qX7Zipe        密码:0rqq

java 百度地图 经纬度_Java百度地图经纬度纠偏相关推荐

  1. java 墨卡托 经纬度_JAVA代码根据经纬度范围计算WGS84与谷歌全球墨卡托包含的切片数目与拼接图像像素尺寸...

    根据项目需求编写的代码. 适用场景:在网络地图上,比如天地图与谷歌地图,用户用鼠标在地图上拉一个矩形框,希望下载该矩形框内某一层级的瓦片数据,并将所有瓦片拼接成一个完整的,包含地理坐标的tif图像. ...

  2. java 数组地图绘画_Java将地图转换为数组[Snippet]

    让我们编写一个将Map值转换为String数组的Java程序. 将映射值转换为数组示例 包 网.javaguides.corejava ; 导入 java.util.数组 ; 导入 java.util ...

  3. java 判断经纬度_Java中根据经纬度来判断距离

    web项目常用的就是用户点击某些商家列表时需要根据距离返回商家列表,最近的放在最前面,这里推荐使用现成的工具类和流来处理. 谷歌有专门的Jar包,先导入包 com.google.guava guava ...

  4. java调用百度地图API根据地理位置获取经纬度

    前言: 自己申请一个百度地图得账号,然后创建自己需要服务拿到Ak 下载地址:登录百度帐号 https://lbsyun.baidu.com/apiconsole/key 1.第一步:申请账号,这一步大 ...

  5. 百度地图墨卡托坐标转高德经纬度坐标(偏移小)

    基本上是网上常见的方法进行坐标系的转换,但是误差很大.发现之所以误差大是在于百度的墨卡托坐标转百度的经纬度时误差太大,后面找到一个方法,误差较小,基本吻合. 参考:http://www.site-di ...

  6. 利用百度地图通过位置名称查询经纬度方法总结

    这段时间公司做大数据统计,需要用到百度地图,并且需要将数据的点位(也就是数据对应的位置)通过经纬度来在地图上进行描点.但是不能单纯用一种方法进行描点,后台定时器也需要调用查看,下面我就简单介绍前后台两 ...

  7. 百度地图根据地名查询其经纬度

    一.代码如下: import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ...

  8. android百度地图轨迹实现,android 获取GPS经纬度在百度地图上绘制轨迹

    实现将一组GPS模块获取的经纬度数据在百度地图上绘制轨迹 1.将经纬度转换成百度地图坐标 /** * 标准的GPS经纬度坐标直接在地图上绘制会有偏移,这是测绘局和地图商设置的加密,要转换成百度地图坐标 ...

  9. 根据HTML5 获取当前位置的经纬度【百度地图】【高德地图】

    是想让地图的定位用户位置更准确一些. 查看了介绍: http://www.w3school.com.cn/html5/html_5_geolocation.asp 看介绍中拿数据挺简单. <!D ...

最新文章

  1. java applet 官网_java applet
  2. 节省公司的宽带接入成本
  3. python帝国cms_Python的类
  4. 花开的声音 - 张靓颖
  5. 【Fedora20】 samba配置
  6. Android9.0 http网络请求失败问题的处理
  7. 物联网大数据平台应具备的功能和特点
  8. __gnu_cxx::hash_map使用中的一些问题
  9. PKM全民推广系列二:PKM活动(过程)
  10. Java学习笔记-全栈-web开发-01-HTML基础总览
  11. SIM-MICRO-SIM- NANO SIM 区别
  12. 打开Excel超链接提示由于本机的限制该操作已被取消
  13. Lumerical官方案例、FDTD时域有限差分法仿真学习(六)——等离子体超材料吸收器(Plasmonic metamaterial absorber)
  14. 服务器主动向android手机端推送消息
  15. 松翰单片机之汇编编程
  16. 《Game说》| 揭秘百万DAU抖音现象级小游戏背后的故事
  17. 快排(基础详解入门)
  18. OpenWrt支持usb tethering
  19. 18.play依赖管理
  20. 可视化小目标--如何提升数据可视化的表现效果

热门文章

  1. google authenticator python_Google Authenticator TOTP原理详解(以Python为例)
  2. 用python绘制心形_如何利用Python绘制一个爱心
  3. python爬取今日热榜数据到txt文件
  4. Android MediaCodec硬编码H264文件(四)
  5. 跟我学习Storm_Storm基本架构
  6. Mac OS X 10.8.3反编译Android apk
  7. SpringBoot之安装H2数据库
  8. 新冠肺炎病毒(Covid-19)检测系统
  9. 如何添加行号 c语言,如何为程序代码加上行号
  10. python抽学号程序_python:简单的学生管理系统