百度地图Java经纬度计算距离 阅读百度地图Web服务api文档Maven依赖百度地图经纬度工具类
阅读百度地图Web服务api文档
借鉴了前辈的代码。哈哈哈哈
package com.api.utils;import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;import java.util.Map;import net.sf.json.JSONObject;import org.gavaghan.geodesy.Ellipsoid;import org.gavaghan.geodesy.GeodeticCalculator;import org.gavaghan.geodesy.GlobalCoordinates;/** * @ClassName: BaiduMapUtils * @Author: Apache_MYK * @Date: 2021/5/27 16:39 * @Description: TODO */public class BaiduMapUtils { private static final String AK = "" /** * 百度地图通过地址来获取经纬度,传入参数address * * @param address * @return Todo */ public static Map<String, Double> getLngAndLat(String address) { Map<String, Double> map = new HashMap<String, Double>(); String url = "http://api.map.baidu.com/geocoding/v3/?address=" + address + "&output=json&ak=" + AK+"&callback=showLocation"; String json = loadJSON(url); JSONObject obj = JSONObject.fromObject(json); if (obj.get("status").toString().equals("0")) { double lng = obj.getJSONObject("result").getJSONObject("location").getDouble("lng"); double lat = obj.getJSONObject("result").getJSONObject("location").getDouble("lat"); map.put("lng", lng); map.put("lat", lat); System.out.println("经度:" + lng + "--- 纬度:" + lat); } else { System.out.println("未找到相匹配的经纬度!"); } return map; } public static String loadJSON(String url) { StringBuilder json = new StringBuilder(); try { URL oracle = new URL(url); URLConnection yc = oracle.openConnection(); BufferedReader in = new BufferedReader(new InputStreamReader( yc.getInputStream(), "UTF-8")); String inputLine = null; while ((inputLine = in.readLine()) != null) { json.append(inputLine); } in.close(); } catch (Exception e) { } int index1 = json.indexOf("("); int index2 = json.lastIndexOf(")"); return json.substring(index1 + 1, index2).toString(); } /** * 通过经纬度获取距离(单位:米) * @param longitudeFrom * @param latitudeFrom * @param longitudeTo * @param latitudeTo * @return */ public static double getDistance1(double longitudeFrom, double latitudeFrom, double longitudeTo, double latitudeTo) { GlobalCoordinates source = new GlobalCoordinates(latitudeFrom, longitudeFrom); GlobalCoordinates target = new GlobalCoordinates(latitudeTo, longitudeTo); return new GeodeticCalculator().calculateGeodeticCurve(Ellipsoid.Sphere, source, target).getEllipsoidalDistance(); }}