地理/逆地理编码

1.高德

官网:添加链接描述

(1)工具类

package com.aibe.common;import com.aibe.util.http.HttpResult;
import com.aibe.util.http.HttpclientUtils;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;import java.util.HashMap;
import java.util.Map;public class GaoDeUtils {private static final String key="";private static final String url="https://restapi.amap.com/v3/geocode/geo";public static String getLatLon(String address){Map<String,Object> parameters=new HashMap<>();parameters.put("key",key);parameters.put("address",address);try {HttpResult result = HttpclientUtils.doGet(url, parameters);if (result.getCode()==200){String body = result.getBody();JSONObject j= JSON.parseObject(body);String info = j.getString("info");if (info.equals("OK")){JSONArray geocodes = j.getJSONArray("geocodes");for (int i = 0; i < geocodes.size(); i++) {JSONObject jsonObject = geocodes.getJSONObject(i);return jsonObject.getString("location");}}return info;}} catch (Exception e) {throw new RuntimeException(e);}return null;}public static void main(String[] args) {String ss = getLatLon("贵州省贵阳市南明区公园中路花果园M区");System.out.println(ss);}
}

(2) 请求http工具

package com.aibe.util.http;import com.alibaba.fastjson.JSONObject;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.net.URI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;/*** @author ocean* @date 2022/11/17 0017 9:49*/
public class HttpclientUtils {//1.不带参数的get请求的方法/**** @param url* @return* @throws Exception*/public static HttpResult doGet(String url) throws Exception{return doGet(url,null);}//2.带参数的get请求的方法/**** @param url  请求的URL* @param map  请求传递的参数* @return* @throws Exception*/public static HttpResult doGet(String url,Map<String, Object> map) throws Exception{//1.创建httpclient的对象CloseableHttpClient client = HttpClients.createDefault();//2.创建httpget get请求对象URIBuilder builder =  new URIBuilder(url);//设置URL//遍历参数,设置参数的值if(map!=null){for (Map.Entry<String, Object> entry : map.entrySet()) {builder.setParameter(entry.getKey(), entry.getValue().toString());}}URI uri = builder.build();HttpGet httpGet = new HttpGet(uri);//3.执行请求CloseableHttpResponse response = client.execute(httpGet);//4.获取响应的结果 封装到httpresult中Integer code = response.getStatusLine().getStatusCode();//状态码String body =null;if(response.getEntity()!=null){body = EntityUtils.toString(response.getEntity(), "utf-8");}HttpResult result = new HttpResult(code, body);return result;}//3.不带参数的post请求的方法public static HttpResult doPost(String url) throws Exception{return doPost(url,null);}//4.带参数的post请的方法public static HttpResult doPost(String url,Map<String, Object> map) throws Exception{//1. 创建httpclient 对象CloseableHttpClient client = HttpClients.createDefault();//2.创建httppost 请求对象HttpPost httpPost = new HttpPost(url);if(map!=null){//遍历参数的map集合  设置参数列表List<NameValuePair> parameters = new ArrayList<>();for (Map.Entry<String, Object> entry : map.entrySet()) {parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));}//创建表单实体对象,将参数设置到表单实体中UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(parameters);//设置表单实体到httpost请求对象中httpPost.setEntity(encodedFormEntity);}//3.执行请求CloseableHttpResponse response = client.execute(httpPost);//4.获取响应结果,封装到httpresult中Integer code = response.getStatusLine().getStatusCode();//状态码String body = null;if(response.getEntity()!=null){body =  EntityUtils.toString(response.getEntity(), "utf-8");}//返回httpresultHttpResult result = new HttpResult(code, body);return result;}//5.带参数和header的post请的方法public static HttpResult doPost(String url,JSONObject jsonParam,Map<String, Object> headers) throws Exception{//1. 创建httpclient 对象CloseableHttpClient client = HttpClients.createDefault();//2.创建httppost 请求对象HttpPost httpPost = new HttpPost(url);StringEntity entity = new StringEntity(jsonParam.toString(), "utf-8");entity.setContentEncoding("UTF-8");entity.setContentType("application/json");httpPost.setEntity(entity);if(headers!=null){//遍历参数的headers集合  设置请求头列表for (Map.Entry<String, Object> entry : headers.entrySet()) {httpPost.addHeader(entry.getKey(), entry.getValue().toString());}}//3.执行请求CloseableHttpResponse response = client.execute(httpPost);//4.获取响应结果,封装到httpresult中Integer code = response.getStatusLine().getStatusCode();//状态码String body = null;if(response.getEntity()!=null){body =  EntityUtils.toString(response.getEntity(), "utf-8");}//返回httpresultHttpResult result = new HttpResult(code, body);return result;}//6.带参数和header的post请的方法public static HttpResult doPost(String url,Map<String, Object> map,Map<String, Object> headers,boolean b) throws Exception{//1. 创建httpclient 对象CloseableHttpClient client = HttpClients.createDefault();//2.创建httppost 请求对象HttpPost httpPost = new HttpPost(url);if(map!=null){//遍历参数的map集合  设置参数列表List<NameValuePair> parameters = new ArrayList<>();for (Map.Entry<String, Object> entry : map.entrySet()) {parameters.add(new BasicNameValuePair(entry.getKey(), entry.getValue().toString()));}//创建表单实体对象,将参数设置到表单实体中UrlEncodedFormEntity encodedFormEntity = new UrlEncodedFormEntity(parameters);//设置表单实体到httpost请求对象中httpPost.setEntity(encodedFormEntity);}if(headers!=null){//遍历参数的headers集合  设置请求头列表for (Map.Entry<String, Object> entry : headers.entrySet()) {httpPost.addHeader(entry.getKey(), entry.getValue().toString());}}//3.执行请求CloseableHttpResponse response = client.execute(httpPost);//4.获取响应结果,封装到httpresult中Integer code = response.getStatusLine().getStatusCode();//状态码String body = null;if(response.getEntity()!=null){body =  EntityUtils.toString(response.getEntity(), "utf-8");}//返回httpresultHttpResult result = new HttpResult(code, body);return result;}}
package com.aibe.util.http;/*** @author ocean* @date 2022/11/17 0017 9:53*/
public class HttpResult {private Integer code;//响应的状态码 200 201.。private String body;//响应体 (响应的内容)public Integer getCode() {return code;}public void setCode(Integer code) {this.code = code;}public String getBody() {return body;}public void setBody(String body) {this.body = body;}public HttpResult(Integer code, String body) {super();this.code = code;this.body = body;}@Overridepublic String toString() {return "HttpResult{" +"code=" + code +", body='" + body + '\'' +'}';}public HttpResult() {}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/7695.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装nginx-1.25.5与ngx_http_headers_more_filter_module模块

#下载nginx的代码 curl -O http://nginx.org/download/nginx-1.25.5.tar.gz #下载headers-more-nginx-module代码 git clone https://github.com/openresty/headers-more-nginx-module#解压 tar -xzf nginx-1.25.5.tar.gzcd nginx-1.25.5#--add-dynamic-module 下载下来的目录 …

接入大量设备后,视频汇聚系统EasyCVR安防监控视频融合平台是如何实现负载均衡的?

一、负载均衡 随着技术的不断进步和监控需求的日益增长&#xff0c;企业视频监控系统的规模也在不断扩大&#xff0c;接入大量监控设备已成为一项常态化的挑战。为确保企业能够有效应对这一挑战&#xff0c;视频汇聚系统EasyCVR视频融合平台凭借其卓越的高并发处理能力&#x…

“Postman 中文版使用教程:如何切换到中文界面?”

Postman 的很好用的接口测试软件。但是&#xff0c;Postman 默认是英文版的&#xff0c;也不支持在软件内切换为中文版。很多同学的英语并不是很好&#xff0c;看到一堆的英文很是头痛。 今天我们来介绍下&#xff1a;切换到 Postman 中文版的方法。想要学习更多的关于 Postma…

Linux: tool: perf使用时遇到的一个问题

最近在看一个问题&#xff0c;说有一个进程占用CPU非常高。 这种问题的debug咱们是比较熟的&#xff0c;就是使用perf命令&#xff0c;来收集一下统计数据&#xff0c;然后再根据结果&#xff0c;进行反编译&#xff0c;看看是具体是哪一个函数使用的比较高&#xff0c;依次往下…

LeetCode hot100-30-Y

24. 两两交换链表中的节点给你一个链表&#xff0c;两两交换其中相邻的节点&#xff0c;并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题&#xff08;即&#xff0c;只能进行节点交换&#xff09;。虽然做出来了&#xff0c;但是真的做得很蠢。递归还是…

【教学类-50-14】20240505“数一数”图片样式12:数一数(12个“人物”图案)

作品展示 背景需求&#xff1a; 前文做了“”材料”图片的数一数学具&#xff0c;效果不错&#xff0c; https://blog.csdn.net/reasonsummer/article/details/138466325https://blog.csdn.net/reasonsummer/article/details/138466325 为了让图案内容更丰富&#xff0c;我又…

皮秒激光切割机可以切割材料及主要应用行业

皮秒激光切割机可以切割多种材料&#xff0c;主要应用行业包括但不限于&#xff1a; 1. PCB板行业&#xff1a;主要用于PCB激光分板&#xff0c;如FR4、补强钢片、FPC、软硬结合板、玻纤板等材料的紫外激光切割。 2. 薄膜材料切割&#xff1a;皮秒紫外激光切割机可以直接切割薄…

图形软件库emWin是什么?怎么学习emWin?

1、emWin前言 emWin 是 Segger 公司针对嵌入式平台开发的稳定、高效的图形软件库&#xff0c;适合用于任何图形 LCD 的操作应用。它可以输出高质量的无锯齿文字和图形&#xff0c;通过调用 emWin 提供的函数接口&#xff0c;开发嵌入式图形界面应用变得简单而快捷。 emWin 主…

启英泰伦“离线自然说”技术,让智能语音芯片更善解人意

“以科技创新推动产业创新&#xff0c;特别是以颠覆性技术和前沿技术催生新产业、新模式、新动能&#xff0c;发展新质生产力”。2023年12月&#xff0c;中央经济工作会议强调了发展新质生产力的路径。“科技创新是发展新质生产力的核心要素&#xff0c;这也是我们一直潜心在做…

解决Pyppeteer下载chromium慢或者失败的问题[INFO] Starting Chromium download.

文章目录 1.进入网址2.选择上面对应自己系统的文件夹进去3. 然后找到自己的python环境中的site-packages中pyppeteer中的chromium_downloader.py文件并打开 在首次使用Pyppeteer时需要下载chromium 1.进入网址 https://registry.npmmirror.com/binary.html?pathchromium-bro…

07_Flutter使用NestedScrollView+TabBarView滚动位置共享问题修复

07_Flutter使用NestedScrollViewTabBarView滚动位置共享问题修复 一.案发现场 可以看到&#xff0c;上图中三个列表的滑动位置共享了&#xff0c;滑动其中一个列表&#xff0c;会影响到另外两个&#xff0c;这显然不符合要求&#xff0c;先来看下布局&#xff0c;再说明产生这个…

【MM32F3270 Micropython】pwm输出

文章目录 前言一、PWM脉宽调制技术介绍二、machine.PWM 类2.1 machine.PWM 类的构造对象2.2 PWM 对象初始化2.3 关闭PWM设备2.4 设置pwm的周期2.5 设置占空比 三、pwm示例代码总结 前言 MicroPython是一种精简的Python 3编程语言实现&#xff0c;旨在在微控制器和嵌入式系统上…

[Android]单元测试和模块测试

在 Kotlin 开发中&#xff0c;单元测试和模块测试&#xff08;有时也称为组件测试或服务测试&#xff09;是两种关键的测试方法&#xff0c;它们帮助开发者确保代码的各个部分独立和整体上都按预期工作。 1.单元测试 单元测试是测试软件应用中最小单元&#xff08;通常是方法…

算法分析 KMP算法中next值的计算、0/1背包问题

5.6.1 KMP算法中next值的计算 设模式的长度为m。用蛮力法求解 KMP算法中的 next值时&#xff0c;next[0]可直接给出&#xff0c;计算next[j](1<j<m-1)则需要在 T[0] …T[j-1]中分别取长度为j-1、..、2、1的真前缀和真后缀并比较是否相等&#xff0c;最坏情况下的时间代价…

解析Linux键盘组合键产生信号的完整过程:从硬件中断到信号发送

前言 每一个了解Linux的都知道这样一个知识&#xff0c;CtrlC组合键能够终止一个进程。 个人了解进程相关知识之后知道&#xff0c;一个进程被终止只会有有三种情况&#xff1a; 代码运行完毕&#xff0c;结果正确代码运行完毕&#xff0c;结果不正确代码运行异常&#xff…

鸿蒙OpenHarmony【基于Hi3516DV300开发板(时钟应用开发)】

概述 本文将介绍如何快速搭建基于OpenHarmony标准系统&#xff08;Hi3516DV300开发板&#xff09;的应用开发环境&#xff0c;并基于一个时钟APP示例逐步展示应用的创建、开发、调试和安装等流程。示例代码可以通过本链接获取。 时钟App是一款显示实时时间的应用&#xff0c;…

【GDPU】数据结构实验十 哈夫曼编码

【实验内容】 1、假设用于通信的电文仅由8个字母 {a, b, c, d, e, f, g, h} 构成&#xff0c;它们在电文中出现的概率分别为{ 0.07, 0.19, 0.02, 0.06, 0.32, 0.03, 0.21, 0.10 }&#xff0c;试为这8个字母设计哈夫曼编码。 提示:包含两个过程:&#xff08;1&#xff09;构建…

【iOS】——浅析CALayer

文章目录 一、CALayer介绍二、UIview与CALayer1.区别2.联系 三、CALayer的使用1.初始化方法2.常用属性 四.CALayer坐标系1.position属性和anchorPoint属性2.position和anchorPoint的关系3.position、anchorPoint和frame的关系 五、CALayerDelegate六、CALayer绘图机制1.绘图流程…

利用Jenkins完成Android项目打包

问题和思路 目前存在的问题 打包操作由开发人员完成&#xff0c;这样开发进度容易被打断。 解决问题的思路 将打包操作交测试/产品/开发人员来完成&#xff0c;主要是测试/开发。 按照以上的思路&#xff0c;那么JenkinsGradle的解决方案是比较经济的&#xff0c;实现起来…

在什么情况下表单会被重复提交?如何避免?

表单被重复提交是Web应用中常见的问题&#xff0c;通常在用户提交表单后点击按钮多次&#xff0c;或在表单提交后刷新页面时发生。这可能导致数据的重复处理&#xff0c;比如重复记录或订单。 何时会发生表单重复提交&#xff1f; 用户多次点击提交按钮&#xff1a;在网络延迟…