通过异步网络请求,调用高德API,获取某个地址的经纬度等信息,再转为百度的经纬度。高德地图API,点击这里

package com.alibaba.controller;import com.alibaba.entity.MyPoint;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
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 org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import java.math.BigDecimal;
import java.util.concurrent.TimeUnit;/*** Created by lightClouds917* Date 2018/1/17* Description:异步网络请求* 此处以请求高德地图示例*/
@RestController
@RequestMapping("asynClient")
public class AsynClientController {private final org.slf4j.Logger logger = LoggerFactory.getLogger(getClass());/** π */private static double PI = 3.1415926535897932384626;/** 参数 */private static double X_PI = 3.14159265358979324 * 3000.0 / 180.0;/*** 高德地图  获取经纬度* @return*/@RequestMapping(value = "test6",method = RequestMethod.GET)public String test6() {logger.info("==================>查询高德地图");String url  = "http://restapi.amap.com/v3/geocode/geo?address=方恒国际中心A座&key=05831d6b4be84db6d042b1d00d65b006";String url1 = "http://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=05831d6b4be84db6d042b1d00d65b006";String url2  = "http://restapi.amap.com/v3/geocode/geo?address=杭州市江干区杭海路1099号&key=05831d6b4be84db6d042b1d00d65b006";//异步网络请求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(url2).execute();String result = future.get().getResponseBody();logger.info("======>result:"+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");for (String location : listSource.textValue().split(",")) {//得到这个位置的经纬度logger.info(location);}}} catch (Exception e) {e.printStackTrace();} finally {if (client != null) {client.close();}}return null;}/*** 查询高德地图坐标* 转为百度地图* url中:address为查询地址*       key需要去高德地图申请,类似于秘钥一样 ,申请地址:http://lbs.amap.com/api/webservice/summary/*/@RequestMapping(value = "test7",method = RequestMethod.GET)public void test7(){try {logger.info("==================>查询高德地图");String url  = "http://restapi.amap.com/v3/geocode/geo?address=方恒国际中心A座&key=05831d6b4be84db6d042b1d00d65b006";//异步网络请求   比上面的简化了一下AsyncHttpClient client = new AsyncHttpClient();AsyncHttpClient.BoundRequestBuilder builder = client.prepareGet(url);ListenableFuture<Response> future = builder.execute();JsonNode jsonNode = new ObjectMapper().readTree(future.get().getResponseBody());if(jsonNode.findValue("status").textValue().equals("1")){JsonNode location = jsonNode.findValue("location");;logger.info("==========>location:"+location);String[] lonAndLat = location.textValue().split(",");logger.info("========>经度:"+lonAndLat[0]);logger.info("========>纬度:"+lonAndLat[1]);//高德---->百度地图MyPoint myPoint = bd_encrypt(new MyPoint(Double.valueOf(lonAndLat[0]), Double.valueOf(lonAndLat[1])));logger.info("========>经度:"+myPoint.getLon());logger.info("========>纬度:"+myPoint.getLat());}String responseBody = future.get().getResponseBody();logger.info(responseBody);}catch (Exception ex){ex.printStackTrace();logger.info("=======>查询出错",ex);}}/*** 对double类型数据保留小数点后多少位* 高德地图转码返回的是 小数点后6位,为了统一封装一下* @param digit 位数* @param in 输入* @return 保留小数位后的数*/public static double dataDigit(int digit,double in){return new BigDecimal(in).setScale(6,   BigDecimal.ROUND_HALF_UP).doubleValue();}/*** 将火星坐标转变成百度坐标* @param lngLat_gd 火星坐标(高德、腾讯地图坐标等)* @return 百度坐标*/public static MyPoint bd_encrypt(MyPoint lngLat_gd) {double x = lngLat_gd.getLon(), y = lngLat_gd.getLat();double z = Math.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 MyPoint(dataDigit(6,z * Math.cos(theta) + 0.0065),dataDigit(6,z * Math.sin(theta) + 0.006));}
}

高德地图获取经纬度、高德地图坐标转为百度地图坐标相关推荐

  1. 微信公众号h5界面获取展示微信内置地图与地图坐标间的转换 — 微信地图(gcj02)转为百度地图

    此文章中实例用测试号进行演示 .getLocation openLocation 主要运用微信JS-SDK,微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信 ...

  2. 【微信公众号VUEh5获取展示微信内置地图(gcj02)转为百度地图】

    此文章中实例用测试号进行演示 .getLocation openLocation 主要运用微信JS-SDK,微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信 ...

  3. vue中获取获取当前城市地址_Vue使用百度地图获取当前城市

    Vue使用百度地图获取当前城市 一:申请百度地图密匙 注册登录后需要进行开发者认证 创建应用 获取密匙AK 二:Vue项目使用 下载相应插件 html文件引入 创建一个新的js文件(下一步需要引入) ...

  4. 高德地图搜索,点击地图获取经纬度

    1.H5页面 一个搜索框.一个经纬度接收框 <input class="layui-input" placeholder="地名" name=" ...

  5. Ptyhon 入门:通过高德地图获取经纬度

    #1.引入包 import json import requests#2.通过高德接口获取经纬度 addr='地址' def gd_map(a):para = {'key': '高德key', # 高 ...

  6. html转换图片位置不正确的是,html5+经纬度定位不准确,html5坐标转火星坐标,百度地图Convertor.translate...

    今天,我爱模板网在做APP考勤时,需要定位用户的位置,显示在地图上,于是就想到了用h5+的plus.geolocation.getCurrentPosition来获取经纬度,然后通过百度地图api将经 ...

  7. 解决通过微信小程序获取的定位坐标在百度地图渲染误差过大问题

    微信小程序可以获取两种坐标系的经纬度,分别为WGS84(大地坐标系)和GCJ02(国测局坐标系)而百度却是在其基础上进行加密形成了自己的一套坐标系bd09(百度坐标系),如果直接用微信小程序获取的经纬 ...

  8. vue使用腾讯地图获取经纬度和逆解析获取详细地址

    vue使用腾讯地图获取经纬度和逆解析获取详细地址 示例 必须在腾讯api中申请自己的key 打开这个webservice用来逆解析详细地址 下面是代码 1 , html创建放地图的容器 <div ...

  9. 百度地图获取经纬度后,获取区域代码和地址

    百度地图获取经纬度后,获取区域代码和地址: function getdistrct_code($location){$url ="api.map.baidu.com/geocoder/v2/ ...

  10. vue中调用百度地图 获取经纬度

    项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图. 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 查询获取经纬度 前期准备 ...

最新文章

  1. 指针都没搞懂,还能算得上 C++ 老司机?
  2. java运行机制是什么_JAVA运行机制
  3. springboot 缓存ehcache的简单使用
  4. linux桌面时区设置,如何在Ubuntu 20.04上设置或更改时区
  5. 7系统启动到一半停止_扛不住了!可口可乐巨震:500个品牌砍一半,裁员4000人.........
  6. ireport交叉报表 crosstab排序_质性数据分析软件NVivo教程:交叉表查询
  7. 做消息推送 8 年的极光,为何做物联网 JIoT 平台?
  8. [转]SQL Server 阻止了对组件 /'Ad Hoc Distributed Queries/' 的访问
  9. win10计算机权限不足是,深度技术windows10系统电脑权限不足导致无法格式化分区的方法...
  10. XJOI恺撒加密术1级19段
  11. java 注解field_jackson学习之七:常用Field注解
  12. SQL修改表信息规则-alter用法
  13. JVM XMX与XMS参数
  14. win7系统无法激活问题
  15. 新浪微博开放平台账号申请(基于dcloud开发)
  16. 计算机控制6路模拟量输出,工业级开关量远程无线收发模块|无线开关量6路输入6路输出控制器|4-20ma模拟量无线通信模块...
  17. matlab可靠性优化,MATLAB在机械可靠性优化设计中的应用.pdf
  18. 大华服务器维护常使用的命令,大华平台软件简介
  19. linux 重启kettle服务_Linux下面kettle的部署
  20. 在SAE标准环境搭建wordpress博客

热门文章

  1. 常见Git分支使用方式
  2. 中国一线二线三线城市名单
  3. Array 常用函数
  4. 特征点匹配(SIFI)
  5. 统计字符数 —— C++
  6. 如何通过学校官网登录中国知网
  7. 省级期刊发表价格具体分析
  8. 室内定位常用方法总结
  9. python窗口居中_Tkinter窗口在屏幕居中的问题
  10. css等比例分割父级容器(完美三等分)