2014-04-08 89 views
3

我可以找到纬度和经度的距离(即:minLatitude,minLongitude,maxLatitude和maxLognitude),但我需要示例java代码来查找minLatitude ,minLongitude,maxLatitude和maxLInnitude从输入的纬度,经度和半径值。从给定的纬度,经度和半径值中查找java中的最大和最小纬度和纬度

以下是查找lat1,long1,lat2和lang2值的距离的代码。

public static double distance(double lat1, double lon1, double lat2, double lon2) { 
     double dLat = Math.toRadians(lat2 - lat1); 
     double dLon = Math.toRadians(lon2 - lon1); 
     lat1 = Math.toRadians(lat1); 
     lat2 = Math.toRadians(lat2); 

     double a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
    double c = 2 * Math.asin(Math.sqrt(a)); 
    return R * c; 
} 
+0

虽然在另一种编程语言,我认为[这可能帮助(http://stackoverflow.com/a/3067597/1300817),因为它实现了同事情,而且代码有点简单 –

回答

0

尝试类似:

/** returns minLatitude, maxLatitude, minLongitude, maxLongitude */ 
public double[] calculateMinMaxValues(double latitude , double longitude, double radius){ 
    double[] res = new double[4]; 
    res[0] /*minLatitude*/ = latitude - (radius*2)/60.0; 
    res[1] /*maxLatitude*/ = latitude + (radius*2)/60.0; 

    res[2] /*minLongitude*/ = (longitude*2)/60.0 *(Math.cos(res[0])); 
    res[3] /*maxLongitude*/ = (longitude*2)/60.0 *(Math.cos(res[1])); 
    return res; 
}