首页 > 编程知识 正文

百度地怎样计算距离,百度地获取经纬度

时间:2023-05-03 09:47:44 阅读:211235 作者:4246

百度地图Java经纬度计算距离 阅读百度地图Web服务api文档Maven依赖百度地图经纬度工具类

阅读百度地图Web服务api文档



Maven依赖 <!--baidu--> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils-core</artifactId> <version>1.8.0</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.1</version> </dependency> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>1.1.1</version> </dependency> <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</artifactId> <version>2.4</version> <classifier>jdk15</classifier> </dependency> <dependency> <groupId>net.sf.ezmorph</groupId> <artifactId>ezmorph</artifactId> <version>1.0.6</version> </dependency> <!--计算距离--> <dependency>   <groupId>org.gavaghan</groupId>   <artifactId>geodesy</artifactId>   <version>1.1.3</version> </dependency> 百度地图经纬度工具类

借鉴了前辈的代码。哈哈哈哈

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(); }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。