开发指南:https://lbs.amap.com/api/webservice/guide/api/georegeo/
高德开放平台网址:https://lbs.amap.com/
点击注册:
选择注册方式,注册完成进入下一步:选择认证方式
我是个人开发,就选个人认证开发者,如果是企业就选企业认证开发者
填写完善信息,进行支付宝扫描实名认证,勾选同意,点击提交资料:
认证结果:
使用 API 前请您先注册高德账号申请Key。
1.进入控制台
https://console.amap.com/dev/key/app
2.在应用管理创建应用
创建好的应用:
为上面的应用添加key
生成的key:
注:此key值是以后,请求api所用的key,一定要保存好
服务示例:
https://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML&key=<用户的key>
请求示例:
示例说明:address 是需要获取坐标的结构化地址,output(XML)用于指定返回数据的格式
,Key是用户请求数据的身份标识。
localtion中逗号前面为经度,后面为纬度
由此api,把地址转为经纬度。
代码如下:
package com.example.listdemo.utils;import com.alibaba.fastjson.JSONObject;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;public class AddressLocationUtil { private static String KEY="<高德key>"; public static String GD_URL="https://restapi.amap.com/v3/geocode/geo?address=%s&key=%s"; private static String SUCCESS_FLAG="1"; public static String getLonAndLatByAddress(String address){ String location=""; GD_URL = String.format(GD_URL, address, KEY); //高德接口返回的是JSON格式的字符串 String queryResult = getResponse(GD_URL); JSONObject obj = JSONObject.parseObject(queryResult); if(String.valueOf(obj.get("status")).equals(SUCCESS_FLAG)){ JSONObject jobJSON = JSONObject.parseObject(obj.get("geocodes").toString().substring(1, obj.get("geocodes").toString().length() - 1)); location = String.valueOf(jobJSON.get("location")); }else{ throw new RuntimeException("地址转换经纬度失败,错误码:" + obj.get("infocode")); } return location; } private static String getResponse(String serverUrl) { // 用JAVA发起http请求,并返回json格式的结果 StringBuffer result = new StringBuffer(); try { URL url = new URL(serverUrl); URLConnection conn = url.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream())); String line; while ((line = in.readLine()) != null) { result.append(line); } in.close(); } catch (Exception e) { e.printStackTrace(); } return result.toString(); } public static void main(String[] args) { String address="北京市朝阳区阜通东大街6号"; String location=getLonAndLatByAddress(address); System.out.println("经纬度:" + location); }}
执行结果:
来源地址:https://blog.csdn.net/qq_26383975/article/details/126309199