[高德开放平台] 定位对接

萌璐琉璃

https://www.jianshu.com/p/312287e25444

目标

对接高德开放平台的定位接口

依赖

<!-- httpclient 工具类 --><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.3</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpmime</artifactId><version>4.3</version></dependency>

工具类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONObject;
import org.apache.http.client.HttpClient;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.alibaba.fastjson.JSONArray;/*** 定位相关工具* 参考:https://blog.csdn.net/u010235716/article/details/51538876*/
public class AddressUtils {// 高德地图API KEY,在高德地图开放平台可以申请到public static final String LBS_API_KEY = "xxxxxx";public static final String LBS_API_GET_LNG_LAT_URL = "http://restapi.amap.com/v3/geocode/geo";public static Double[] getLngAndLatByAmap(String address) throws Exception {address = address.trim();Map<String,String> pames = new HashMap<>();pames.put("address",URLEncoder.encode(address, "utf-8"));pames.put("output","json");pames.put("key",LBS_API_KEY);String json = HttpUtils.sendGet(LBS_API_GET_LNG_LAT_URL,pames);System.out.println(json);JSONObject jsonObject = JSONObject.fromObject(json).getJSONArray("geocodes").getJSONObject(0);Double[] rest = new Double[2];String location = jsonObject.getString("location");rest[0] = Double.valueOf(location.split(",")[0]);rest[1] = Double.valueOf(location.split(",")[1]);return rest;}
}

HttpUtils工具类

package com.zp.haveplace.util;import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.zip.GZIPInputStream;import org.apache.http.HttpHost;
import org.apache.http.HttpRequest;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.HttpParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import org.apache.http.util.EntityUtils;/*** ClassName: HttpUtils* 参考: http://wiki.jikexueyuan.com/project/java-wechat/11.html* @Description: http 请求工具类* @author dapengniao* @date 2016 年 3 月 10 日 下午 3:57:14*/
@SuppressWarnings("deprecation")
public class HttpUtils {/*** @Description: http get 请求共用方法* @param @param reqUrl* @param @param params* @param @return* @param @throws Exception* @author dapengniao* @date 2016 年 3 月 10 日 下午 3:57:39*/@SuppressWarnings("resource")public static String sendGet(String reqUrl, Map<String, String> params)throws Exception {InputStream inputStream = null;HttpGet request = new HttpGet();try {String url = buildUrl(reqUrl, params);HttpClient client = new DefaultHttpClient();request.setHeader("Accept-Encoding", "gzip");request.setURI(new URI(url));HttpResponse response = client.execute(request);inputStream = response.getEntity().getContent();String result = getJsonStringFromGZIP(inputStream);return result;} finally {if (inputStream != null) {inputStream.close();}request.releaseConnection();}}/*** @Description: http post 请求共用方法* @param @param reqUrl* @param @param params* @param @return* @param @throws Exception* @author dapengniao* @date 2016 年 3 月 10 日 下午 3:57:53*/@SuppressWarnings("resource")public static String sendPost(String reqUrl, Map<String, String> params)throws Exception {try {Set<String> set = params.keySet();List<NameValuePair> list = new ArrayList<NameValuePair>();for (String key : set) {list.add(new BasicNameValuePair(key, params.get(key)));}if (list.size() > 0) {try {HttpClient client = new DefaultHttpClient();HttpPost request = new HttpPost(reqUrl);request.setHeader("Accept-Encoding", "gzip");request.setEntity(new UrlEncodedFormEntity(list, HTTP.UTF_8));HttpResponse response = client.execute(request);InputStream inputStream = response.getEntity().getContent();try {String result = getJsonStringFromGZIP(inputStream);return result;} finally {inputStream.close();}} catch (Exception ex) {ex.printStackTrace();throw new Exception("网络连接失败,请连接网络后再试");}} else {throw new Exception("参数不全,请稍后重试");}} catch (Exception ex) {ex.printStackTrace();throw new Exception("发送未知异常");}}/*** @Description: http post 请求 json 数据* @param @param urls* @param @param params* @param @return* @param @throws ClientProtocolException* @param @throws IOException* @author dapengniao* @date 2016 年 3 月 10 日 下午 3:58:15*/public static String sendPostBuffer(String urls, String params)throws ClientProtocolException, IOException {HttpPost request = new HttpPost(urls);StringEntity se = new StringEntity(params, HTTP.UTF_8);request.setEntity(se);// 发送请求@SuppressWarnings("resource")HttpResponse httpResponse = new DefaultHttpClient().execute(request);// 得到应答的字符串,这也是一个 JSON 格式保存的数据String retSrc = EntityUtils.toString(httpResponse.getEntity());request.releaseConnection();return retSrc;}/*** @Description: http 请求发送 xml 内容* @param @param urlStr* @param @param xmlInfo* @param @return* @author dapengniao* @date 2016 年 3 月 10 日 下午 3:58:32*/public static String sendXmlPost(String urlStr, String xmlInfo) {// xmlInfo xml 具体字符串try {URL url = new URL(urlStr);URLConnection con = url.openConnection();con.setDoOutput(true);con.setRequestProperty("Pragma:", "no-cache");con.setRequestProperty("Cache-Control", "no-cache");con.setRequestProperty("Content-Type", "text/xml");OutputStreamWriter out = new OutputStreamWriter(con.getOutputStream());out.write(new String(xmlInfo.getBytes("utf-8")));out.flush();out.close();BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));String lines = "";for (String line = br.readLine(); line != null; line = br.readLine()) {lines = lines + line;}return lines; // 返回请求结果} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return "fail";}private static String getJsonStringFromGZIP(InputStream is) {String jsonString = null;try {BufferedInputStream bis = new BufferedInputStream(is);bis.mark(2);// 取前两个字节byte[] header = new byte[2];int result = bis.read(header);// reset 输入流到开始位置bis.reset();// 判断是否是 GZIP 格式int headerData = getShort(header);// Gzip 流 的前两个字节是 0x1f8bif (result != -1 && headerData == 0x1f8b) {// LogUtil.i("HttpTask", " use GZIPInputStream  ");is = new GZIPInputStream(bis);} else {// LogUtil.d("HttpTask", " not use GZIPInputStream");is = bis;}InputStreamReader reader = new InputStreamReader(is, "utf-8");char[] data = new char[100];int readSize;StringBuffer sb = new StringBuffer();while ((readSize = reader.read(data)) > 0) {sb.append(data, 0, readSize);}jsonString = sb.toString();bis.close();reader.close();} catch (Exception e) {e.printStackTrace();}return jsonString;}private static int getShort(byte[] data) {return (data[0] << 8) | data[1] & 0xFF;}/*** 构建 get 方式的 url** @param reqUrl*            基础的 url 地址* @param params*            查询参数* @return 构建好的 url*/public static String buildUrl(String reqUrl, Map<String, String> params) {StringBuilder query = new StringBuilder();Set<String> set = params.keySet();for (String key : set) {query.append(String.format("%s=%s&", key, params.get(key)));}return reqUrl + "?" + query.toString();}}

高德开放平台定位功能对接相关推荐

  1. 高德开放平台发布“GAIA计划”,打造“组件式”解决方案

    今日,高德开放平台在北京举办2018战略说明会,正式对外发布了"GAIA计划",宣布将为合作伙伴提供针对包括网约车.海外.货运.游戏等行业"组件式"的垂类解决方 ...

  2. 高德开放平台与360儿童手表达成合作,全球数据助力第三方企业

    3月29日下午,国内互联网安全企业 360 对外发布了全新儿童春季智能新品.360 儿童手表与国内领先的 LBS 服务提供商高德开放平台达成合作,可通过定位等多项功能,让家长随时掌握孩子的动态,保障儿 ...

  3. 高德开放平台 - 学习/实践

    1.应用场景 借助高德开放平台进行项目的开发, 完成 业务需要, 如地理编码. 2.学习/操作 2.1 介绍 暂见: https://lbs.amap.com/dev/index  //高德开放平台开 ...

  4. 百度AI开放平台和高德开放平台的使用

    目录 1.百度AI开放平台 1.1语音合成 1.2语音识别 1.3人脸识别 1.4文字识别 1.4.1手写文字识别 1.4.2 身份证识别 1.5人体检测 2.高德开放平台 2.1天气查询 2.2地理 ...

  5. python爬取地图上的经纬度_使用高德开放平台api批量爬取所需经纬度及位置信息(平台教程和python多进程、多线程代码详解)...

    2019.3.20更新(将代码升级为非阻塞式多进程,效率极大提升) 2019.6.28更新 (将代码模块化,复用性更强,使用更高效的线程池进行爬取) 之前写爬虫对链家某地区全部二手房信息进行了获取并存 ...

  6. 电信物联网开放平台_NB-IoT业务对接 Java 后台、Android 前端已完成预研

    电信物联网开放平台_NB-IoT业务对接 Java 后台.Android 前端已完成预研 一.NB-IoT : 硬件设备 BC28模组 二.Java 后台: SSH集成电信物联SDK.极光推送SDK. ...

  7. 微信小程序uniapp高德开放平台路线规划1对多导航路线方法记录

    在高德开放平台申请key并下载sdk:amap-wx.js放到pages同级目录libs里面 <template><view class="content"> ...

  8. 高德天气 php,高德开放平台天气查询API

    更多内容,请查看博客原文:高德开放平台天气查询API https://finolo.gy/2020/01/高德开放平台天气查询API/ 高德开放平台下的天气查询接口文档 https://lbs.ama ...

  9. 接入高德开放平台实现地址转换为经纬度坐标

    高德地图API 1 地址转为经纬度 后台人员填写完房源详情地址后,由此地址转为,电子地图中的经纬度.从而方便日后前台在电子地 图中的标识显示. 高德地图开放平台:https://lbs.amap.co ...

最新文章

  1. 修改所有列_多人编辑,自动汇总,领导可见所有?用 SeaTable 表格更简单
  2. 最新(2019/3)CSDN博客Markdown编辑格式说明,包含效果图
  3. High1赛因天气不理想取消 球员平分一半奖金
  4. 当你和你女朋友闹矛盾时......
  5. Java 关键字 transient
  6. java实现学生财务管理_基于jsp的学生社团财务管理-JavaEE实现学生社团财务管理 - java项目源码...
  7. 【NOIP校内模拟】T2 字胡串(分治)
  8. ASP.NET MVC 5 默认模板的JS和CSS 是怎么加载的?
  9. sqlite3简单使用
  10. 2022G3锅炉水处理复训题库及答案
  11. CSP2019滚粗记
  12. 期货市场亏了怎么自救?
  13. 关于百度 OpenRASP 的个人拙见
  14. mac电脑使用入门详解
  15. 道路交通车路协同信息服务通用技术要求
  16. hdu4215 Moles
  17. NDS游戏《马里奥与路易》的迷你游戏《打地鼠》,玩了一晚上
  18. python输入end退出循环_python练习:从入门到实践——用户输入和while循环
  19. 【imessage苹果推】苹果邮箱推邮箱Apple Push IMESSage SMS
  20. Matlab方根运算

热门文章

  1. 暗影之枪显示连接服务器失败,暗影之枪传奇进不去怎么办?游戏更新进不去问题详解[多图]...
  2. linux内核维护者,Linux 内核维护者封杀明尼苏达大学(转载) - 优秀的Free OS(Linux)版 - 北大未名BBS...
  3. 洛谷——P1319 压缩技术
  4. 分时问候并显示不用图片案例
  5. vue 监听div滚动事件
  6. Ubuntu安装摄像头软件GTK_UVC_Viewer
  7. 上传图片到服务器不能马上响应,用post方式上传图片到服务器
  8. 马健计算机博士,马健-中国科学院大学-UCAS
  9. 【跃迁之路】【736天】程序员高效学习方法论探索系列(实验阶段493-2019.2.26)...
  10. 成立了汽车与智能出行事业部的阿里云,如何建立云上行业生态?