高德地图获取经纬度、高德地图坐标转为百度地图坐标
通过异步网络请求,调用高德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));}
}
高德地图获取经纬度、高德地图坐标转为百度地图坐标相关推荐
- 微信公众号h5界面获取展示微信内置地图与地图坐标间的转换 — 微信地图(gcj02)转为百度地图
此文章中实例用测试号进行演示 .getLocation openLocation 主要运用微信JS-SDK,微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信 ...
- 【微信公众号VUEh5获取展示微信内置地图(gcj02)转为百度地图】
此文章中实例用测试号进行演示 .getLocation openLocation 主要运用微信JS-SDK,微信JS-SDK是微信公众平台 面向网页开发者提供的基于微信内的网页开发工具包.通过使用微信 ...
- vue中获取获取当前城市地址_Vue使用百度地图获取当前城市
Vue使用百度地图获取当前城市 一:申请百度地图密匙 注册登录后需要进行开发者认证 创建应用 获取密匙AK 二:Vue项目使用 下载相应插件 html文件引入 创建一个新的js文件(下一步需要引入) ...
- 高德地图搜索,点击地图获取经纬度
1.H5页面 一个搜索框.一个经纬度接收框 <input class="layui-input" placeholder="地名" name=" ...
- Ptyhon 入门:通过高德地图获取经纬度
#1.引入包 import json import requests#2.通过高德接口获取经纬度 addr='地址' def gd_map(a):para = {'key': '高德key', # 高 ...
- html转换图片位置不正确的是,html5+经纬度定位不准确,html5坐标转火星坐标,百度地图Convertor.translate...
今天,我爱模板网在做APP考勤时,需要定位用户的位置,显示在地图上,于是就想到了用h5+的plus.geolocation.getCurrentPosition来获取经纬度,然后通过百度地图api将经 ...
- 解决通过微信小程序获取的定位坐标在百度地图渲染误差过大问题
微信小程序可以获取两种坐标系的经纬度,分别为WGS84(大地坐标系)和GCJ02(国测局坐标系)而百度却是在其基础上进行加密形成了自己的一套坐标系bd09(百度坐标系),如果直接用微信小程序获取的经纬 ...
- vue使用腾讯地图获取经纬度和逆解析获取详细地址
vue使用腾讯地图获取经纬度和逆解析获取详细地址 示例 必须在腾讯api中申请自己的key 打开这个webservice用来逆解析详细地址 下面是代码 1 , html创建放地图的容器 <div ...
- 百度地图获取经纬度后,获取区域代码和地址
百度地图获取经纬度后,获取区域代码和地址: function getdistrct_code($location){$url ="api.map.baidu.com/geocoder/v2/ ...
- vue中调用百度地图 获取经纬度
项目中,需要实现获取当前位置的经纬度,或者搜索某个位置并获取经纬度信息,我使用的的是vue,地图使用的是百度地图. 默认自动获取当前位置经纬度 拖动小红标 获取经纬度 关键词 查询获取经纬度 前期准备 ...
最新文章
- 指针都没搞懂,还能算得上 C++ 老司机?
- java运行机制是什么_JAVA运行机制
- springboot 缓存ehcache的简单使用
- linux桌面时区设置,如何在Ubuntu 20.04上设置或更改时区
- 7系统启动到一半停止_扛不住了!可口可乐巨震:500个品牌砍一半,裁员4000人.........
- ireport交叉报表 crosstab排序_质性数据分析软件NVivo教程:交叉表查询
- 做消息推送 8 年的极光,为何做物联网 JIoT 平台?
- [转]SQL Server 阻止了对组件 /'Ad Hoc Distributed Queries/' 的访问
- win10计算机权限不足是,深度技术windows10系统电脑权限不足导致无法格式化分区的方法...
- XJOI恺撒加密术1级19段
- java 注解field_jackson学习之七:常用Field注解
- SQL修改表信息规则-alter用法
- JVM XMX与XMS参数
- win7系统无法激活问题
- 新浪微博开放平台账号申请(基于dcloud开发)
- 计算机控制6路模拟量输出,工业级开关量远程无线收发模块|无线开关量6路输入6路输出控制器|4-20ma模拟量无线通信模块...
- matlab可靠性优化,MATLAB在机械可靠性优化设计中的应用.pdf
- 大华服务器维护常使用的命令,大华平台软件简介
- linux 重启kettle服务_Linux下面kettle的部署
- 在SAE标准环境搭建wordpress博客