高德Web服务Api,逆编码(通过经纬度获取地址)

 获取key:获取Key-创建工程-开发指南-Web服务 API|高德地图API (amap.com)

package org.example;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class GaoDeTest {
    /**
     * 逆地理编码
     * 通过经纬度获取结构化地址
     */

    public static void main(String[] args) {
        String gaodeResult = GetLocationMsg(114.065240, 25.189741);
        System.out.println("高德地址-------->" + gaodeResult);
    }

    /**
     * 

* Title: GetLocationMsg * Description:高德地图API * @param longitude * @param latitude * @return */ public static String GetLocationMsg(double longitude, double latitude) { String message = ""; String address = ""; // 高德地图逆地理编码API String url = String.format( "https://restapi.amap.com/v3/geocode/regeo?output=JSON&key=你申请的key&radius=1000&extensions=all&batch=false&roadlevel=0&location=%s,%s", longitude, latitude); URL myURL = null; URLConnection httpsConn = null; try { myURL = new URL(url); } catch (MalformedURLException e) { e.printStackTrace(); } try { httpsConn = (URLConnection) myURL.openConnection(); httpsConn.setConnectTimeout(100000); if (httpsConn != null) { InputStreamReader insr = new InputStreamReader( httpsConn.getInputStream(), "UTF-8"); BufferedReader br = new BufferedReader(insr); String data = null; while ((data = br.readLine()) != null) { message = message + data; } JsonParser jp = new JsonParser(); //将json字符串转化成json对象 JsonObject jo = jp.parse(message).getAsJsonObject(); String status = jo.get("status").getAsString(); String addressJsonEle = jo.get("regeocode").getAsJsonObject().get("formatted_address").toString(); if (addressJsonEle.equals("[]")) { address = null; } else { if (jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().size() <= 0) { String detail = jo.get("regeocode").getAsJsonObject().get("addressComponent").getAsJsonObject().get("streetNumber").getAsJsonObject().get("street").getAsString() + jo.get("regeocode").getAsJsonObject().get("addressComponent").getAsJsonObject().get("streetNumber").getAsJsonObject().get("number").getAsString(); if (status.equals("1") && !addressJsonEle.equals("[]")) { address = addressJsonEle + " " + detail; } } else { String detail = jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().get(0).getAsJsonObject().get("name").getAsString(); String detailDistance = jo.get("regeocode").getAsJsonObject().get("pois").getAsJsonArray().get(0).getAsJsonObject().get("distance").getAsString(); if (status.equals("1") && !addressJsonEle.equals("[]")) { address = addressJsonEle + " " + detail + " " + detailDistance.substring(0, detailDistance.lastIndexOf(".")) + "米"; } } } insr.close(); } } catch ( IOException e) { e.printStackTrace(); } return address; } }

你可能感兴趣的:(java)