因为项目中使用到了高德地图的API获取到了某查询位置的经纬度,但是页面定位的时候是使用的百度地图,所以这其中需要进行相应的转码。高德使用的是火星坐标(地球坐标加密后的地址),百度地图使用的是自己加密后的经纬度。


编写经纬度实体类

package com.liang.work.entity;/*** Created by rcc on 2018/1/18.*/
//经纬度实体类
public class Point {private double lon;private double lat;public Point(double lon, double lat) {this.lon = lon;this.lat = lat;}public double getLon() {return lon;}public void setLon(double lon) {this.lon = lon;}public double getLat() {return lat;}public void setLat(double lat) {this.lat = lat;}@Overridepublic String toString() {return "Point{" +"lon=" + lon +", lat=" + lat +'}';}
}

编写主类

package com.liang.work.main;import com.fasterxml.jackson.databind.JsonNode;
import com.liang.work.entity.Point;
import com.ning.http.client.AsyncHttpClient;
import com.ning.http.client.AsyncHttpClientConfig;
import com.ning.http.client.ListenableFuture;
import com.ning.http.client.Response;import java.math.BigDecimal;
import java.util.concurrent.TimeUnit;import static java.lang.Math.sqrt;/*** Created by rcc on 2018/1/17.*/
public class ApplicationMain {private static double x_PI = 3.14159265358979324 * 3000.0 / 180.0;private static double PI = 3.1415926535897932384626;static  double bd_lon = 0.0;static  double bd_lat = 0.0;public static void main(String [] args){String url = "http://restapi.amap.com/v3/geocode/geo?address=方恒国际中心A座&output=JSON&key=这里填写注册后获得的key值";AsyncHttpClientConfig.Builder builder = new AsyncHttpClientConfig.Builder();builder.setCompressionEnabled(true).setAllowPoolingConnection(true);builder.setRequestTimeoutInMs((int) TimeUnit.MINUTES.toMillis(1));builder.setIdleConnectionTimeoutInMs((int) TimeUnit.MINUTES.toMillis(1));AsyncHttpClient client = new AsyncHttpClient(builder.build());try {ListenableFuture<Response> future = client.prepareGet(url).execute();String result = future.get().getResponseBody();System.out.println(result);JsonNode jsonNode = new com.fasterxml.jackson.databind.ObjectMapper().readTree(future.get().getResponseBody());if(jsonNode.findValue("status").textValue().equals("1")) {JsonNode listSource = jsonNode.findValue("location");System.out.println(listSource);for(String location : listSource.textValue().split(",")){//得到这个位置的经纬度System.out.println(location);}String[] location = listSource.textValue().split(",");bd_lon = Double.parseDouble(location[0]);bd_lat = Double.parseDouble(location[1]);Point point = new Point(bd_lon,bd_lat);Point point1 = bd_encrypt(point);System.out.print(point1);}} catch (Exception e) {e.printStackTrace();} finally {if(client != null){client.close();}}}/*** 对double类型数据保留小数点后多少位*  高德地图转码返回的就是 小数点后6位,为了统一封装一下* @param digit 位数* @param in 输入* @return 保留小数位后的数*/static double dataDigit(int digit,double in){return new BigDecimal(in).setScale(6,   BigDecimal.ROUND_HALF_UP).doubleValue();}/*** 将火星坐标转变成百度坐标* @param lngLat_gd 火星坐标(高德、腾讯地图坐标等)* @return 百度坐标*/public static Point bd_encrypt(Point lngLat_gd){double x = lngLat_gd.getLon(), y = lngLat_gd.getLat();double z = sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_PI);double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x *  x_PI);return new Point(dataDigit(6,z * Math.cos(theta) + 0.0065),dataDigit(6,z * Math.sin(theta) + 0.006));}
}

最后出现的结果包含许多信息,可以参考高德的API说明:

java实现高德地图经纬度转换成百度地图相关推荐

  1. 由GPS定位的经纬度转换成百度地图经纬度坐标

    /**  * @Description: 各地图API坐标系统比较与转换; WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系, ...

  2. 腾讯地图转换成百度地图坐标

    https://www.jianshu.com/p/0fe30fcd4ae7 一.各个坐标系的概况 众所周知地球是一个不规则椭圆体,GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则 ...

  3. android 经纬度 转换成地址,Android 百度地图经纬度转换成地址

    1.地理编码查询接口是单列模式的,我们需要调用让它自己实例化 // 在OnCreate方法里创建地理编码检索实例 GeoCoder geoCoder = GeoCoder.newInstance(); ...

  4. 百度地图经纬度转换腾讯地图经纬度

    百度地图经纬度转腾讯地图经纬度 function  bMapTransQQMap(lng,lat){         let x_pi = 3.14159265358979324 * 3000.0 / ...

  5. 地址转换成百度经纬度,数据太多!不愿意花钱?

    需求 最近出了一个这样的需求,需要把几百万的数据,进行地址,进行经纬度转换 百度api 缺点:需要收费,然后看了下价格,有点贵,不愿意花钱?那没就,只能自己进行数据爬取 先找好目标网站 https:/ ...

  6. js处理腾讯地图经纬度转换百度地图经纬度

    })          /**          * 坐标转换,腾讯地图转换成百度地图坐标          * lng 腾讯经度(pointy)          * lat 腾讯纬度(pointx ...

  7. android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换

    android java 经纬度(国标WGS84/gps84/硬件/谷歌地球卫星,Gcj02/腾讯地图/高德地图,Bd09/百度地图)之间互换 前言: 由于项目需要,很多时候都需要地图经纬度直接的转换 ...

  8. python 地图偏移_python 地图经纬度转换、纠偏的实例代码 百度地图经纬度web纠偏怎么用...

    天地图的经纬度 经过纠偏了么 给个例子证明下 如何用python实现百度地图墨卡托坐标跟经纬度坐标互转 麦哲伦机器: 系统设置 地图单位 自定义坐标系 横向墨卡托 原点纬度0 原点经度126(通化) ...

  9. 地图坐标系之间的转换(百度地图、GCJ、WGS84)

    文章目录 文章参考 坐标系介绍 常见坐标系 WGS84坐标系(标准的GPS坐标) WGS84 Web墨卡托(平面地图) GCJ02经纬度投影(火星坐标系) GCJ02 Web 墨卡托投影 BD09 经 ...

  10. HIVE自定义UDF函数-经纬度转换成省市地址

    目录 1.需求背景 2.解决方案 3.代码pom引用 4.代码集成UDF 5.编译jar包 6.使用说明 7.将jar包放到hdfs 8.创建持久化function 9.测试 10.结语 1.需求背景 ...

最新文章

  1. java找到项目下的某个文件夹_servlet 得到 JavaWeb项目下某文件夹的路径
  2. 数据结构与算法之打印两个有序链表公共部分和判断一个链表是否具有回文结构
  3. mysql中的shell脚本命令_shell脚本中mysql命令
  4. JavaWeb总结(十五)
  5. 预警展示样式html,纯css3 Tooltip工具提示样式
  6. CubeMX 的使用实例详细(04.6)- STM32F103的 - 定时器设定 - callback调用 - 实现1S的定时更新LED灯
  7. mysql show tables_MySQL防误删插件Recycle-Bin简介
  8. 2019蓝桥杯Java决赛题答案_2019-01-15 第八届蓝桥杯javaB组第二题
  9. 2.7 亿学生宅家上课,家长有意见了......
  10. store.js - 轻松实现本地存储(LocalStorage)
  11. HTML5 简介与安装
  12. el-input 只能输入整数(包括正数、负数、0)或者只能输入整数(包括正数、负数、0)和小数
  13. 【MATLAB appdesigner】23_如何通过回调函数来实现“键盘操作”?
  14. “士兵突击”职场攻略心法
  15. 两台计算机组装在一起,好看又实用 手把手教你把两台电脑装在一起
  16. 把飞书融入日常学习流程:一个人的飞书也挺好
  17. 基于mahout的动漫推荐系统
  18. python中#!含义
  19. 顾盼华发鸿蒙怦然而梦是什么意思,最美的承诺情话
  20. hualinux1.9 基础练习:如何删除900W单目录小文件

热门文章

  1. 8.1 段子中“酷毙”了的IT行业——《逆袭大学》连载
  2. XJTU_选课小助手
  3. 招聘 | 清华大学计算机系知识工程实验室博士后
  4. Word样式窗格、模板格式
  5. OVF 和 OVA 文件格式和模板的区别
  6. 打开微信备份文件db_安卓手机微信数据导出方法-adb备份(无需root) - Fenlog软件...
  7. teamtalk简介
  8. 计算机辅助教育题库和答案,计算机考试题库及参考答案.docx
  9. CefSharp 实现拖拉滑动验证Demo
  10. 网络调试助手(模拟下位机收发数据)快速指南