百度地图经纬度获取详细地址以及经纬度计算距离

   就是一个HTTP请求,返回给定的经纬度地址,什么包都没有导入

private String  getMapaddress(String lats,String lngs){
		 try{
			 String lat = "39.983424"; // 纬度 
	         String lng = "116.322987";  // 经度
	           //  AK 百度开放平台申请的KEY
	            URL url = new URL("http://api.map.baidu.com/geocoder/v2/?ak=wPPxsfCtNFm4PqEV68jbDdjP7U4twstj&callback=renderReverse&location="+ lat + "," + lng + "&output=json&pois=1");
	            HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
	            ucon.connect();

	            InputStream in = ucon.getInputStream();
	            BufferedReader reader = new BufferedReader(new InputStreamReader(in,"UTF-8"));
	            String str = reader.readLine(); 

	            str = str.substring(str.indexOf("(") + 1, str.length()-1);
	            //outprint.print(str);

	            JSONObject jsonObject =  JSONObject.parseObject(str);
	            String address = "";
	            address = jsonObject.getJSONObject("result").getString("formatted_address");
	            in.close();
	            reader.close();
	            return address;
	            /*outprint.print(address);
	            outprint.close();
	            outprint=null;  */
	        }catch(Exception e){
	            e.printStackTrace(); 
	        }
		 return "";
	}

 

下面是经纬之间距离计算方式  根据GPS经纬度坐标计算两点的距离算法

public class GPSUtils {
	 private static double EARTH_RADIUS = 6378.137;    
	    
	    private static double rad(double d) {    
	        return d * Math.PI / 180.0;    
	    }    
	    
	    /**   
	     * Lat1 Lung1 表示A点经纬度,Lat2 Lung2 表示B点经纬度; a=Lat1 – Lat2 为两点纬度之差 b=Lung1 
	     * -Lung2 为两点经度之差; 6378.137为地球半径,单位为千米;  计算出来的结果单位为千米。
	     * 通过经纬度获取距离(单位:千米)   
	     * @param lat1   
	     * @param lng1   
	     * @param lat2   
	     * @param lng2   
	     * @return   
	     */    
	    public static double getDistance(double lat1, double lng1, double lat2,    
	                                     double lng2) {    
	        double radLat1 = rad(lat1);    
	        double radLat2 = rad(lat2);    
	        double a = radLat1 - radLat2;    
	        double b = rad(lng1) - rad(lng2);    
	        double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2)    
	                + Math.cos(radLat1) * Math.cos(radLat2)    
	                * Math.pow(Math.sin(b / 2), 2)));    
	        s = s * EARTH_RADIUS;    
	        s = Math.round(s * 10000d) / 10000d;    
	       // s = s*1000;    乘以1000是换算成米
	        return s;    
	    } 
}

 

你可能感兴趣的:(java)