java------4.根据经纬度排序,并计算距离。。。。。。。。根据地址计算出经纬度

 1 String sql = "select xm.*,xs.*,xs.id as shopId,sqrt (   (  (( " + customerLongitude
 2                     + "-xs.longitude)*PI()*12656*COS(((" + customerLatitude
 3                     + "+xs.latitude)/2)*PI()/180)/180)" + "*" + "((  "
 4                     + customerLongitude + "-xs.longitude)*PI()*12656*COS((("
 5                     + customerLatitude + "+xs.latitude)/2)*PI()/180)/180) " + ")"
 6                     + "+(" + "  (( " + customerLatitude
 7                     + "-xs.latitude)*PI()*12656/180) " + "*" + "((" + customerLatitude
 8                     + "-xs.latitude)*PI()*12656/180)" + " )" + " ) as juli ";
 9
10
11 double LonB = Double.parseDouble(m.get("longitude").toString());
12             double LatB = Double.parseDouble(m.get("latitude").toString());
13             double distance = Math.floor(XiNaiInterfaceUtils.getDistance(customerLongitude,customerLatitude, LonB, LatB) / 1000*10)/10;

计算经纬度 需要 commons-lang3-3.1.jar

 1 import java.io.BufferedReader;
 2 import java.io.IOException;
 3 import java.io.InputStreamReader;
 4 import java.net.URL;
 5 import java.net.URLEncoder;
 6 import java.util.HashMap;
 7 import java.util.Map;
 8
 9 import org.apache.commons.lang3.StringUtils;
10 /**
11  *经纬度
12  * @author Administrator
13  *
14  */
15 public class LantiDemo {
16
17     public static final String KEY_1 = "7d9fbeb43e975cd1e9477a7e5d5e192a";
18
19     public static Map<String,String> getGeocoderLatitude(String address){
20         BufferedReader in = null;
21         try {
22             address = URLEncoder.encode(address, "UTF-8");
23             URL tirc = new URL("http://api.map.baidu.com/geocoder?address="+ address +"&output=json&key="+ KEY_1);
24
25
26             in = new BufferedReader(new InputStreamReader(tirc.openStream(),"UTF-8"));
27             String res;
28             StringBuilder sb = new StringBuilder("");
29             while((res = in.readLine())!=null){
30                 sb.append(res.trim());
31             }
32             String str = sb.toString();
33             Map<String,String> map = null;
34             if(StringUtils.isNotEmpty(str)){
35                 int lngStart = str.indexOf("lng\":");
36                 int lngEnd = str.indexOf(",\"lat");
37                 int latEnd = str.indexOf("},\"precise");
38                 if(lngStart > 0 && lngEnd > 0 && latEnd > 0){
39                     String lng = str.substring(lngStart+5, lngEnd);
40                     String lat = str.substring(lngEnd+7, latEnd);
41                     map = new HashMap<String,String>();
42                     map.put("lng", lng);
43                     map.put("lat", lat);
44                     return map;
45                 }
46             }
47         }catch (Exception e) {
48             e.printStackTrace();
49         }finally{
50             try {
51                 in.close();
52             } catch (IOException e) {
53                 e.printStackTrace();
54             }
55         }
56         return null;
57     }
58
59     public static void main(String args[]){
60         try {
61             Map<String, String> json = LantiDemo.getGeocoderLatitude("南京市栖霞区仙隐北路5号");
62             System.out.println("lng : " + json.get("lng"));
63             System.out.println("lat : " + json.get("lat"));
64         }catch (Exception e ){
65             e.printStackTrace();
66         }
67     }
68 }
时间: 2024-11-05 18:50:50

java------4.根据经纬度排序,并计算距离。。。。。。。。根据地址计算出经纬度的相关文章

根据用户经纬度,sql计算距离并排序

根据经纬度计算距离 public class DistanceUtil { // 地球平均半径 private static final double EARTH_RADIUS = 6378137; // 把经纬度转为度(°) private static double rad(double d) { return d * Math.PI / 180.0; } /** * 根据两点间经纬度坐标(double值),计算两点间距离,单位:千米 * @author ershuai * @param l

PHP根据两点间的经纬度计算距离,php两点经纬度计算(转)

这是一个不错的示例,直接贴代码,首先要知道纬度值.经度值 /** * @desc 根据两点间的经纬度计算距离 * @param float $lat 纬度值 * @param float $lng 经度值 */ function getDistance($lat1, $lng1, $lat2, $lng2) { $earthRadius = 6367000; //approximate radius of earth in meters /* Convert these degrees to r

【转】通过经纬度坐标计算距离的方法(经纬度距离计算)

最近在网上搜索“通过经纬度坐标计算距离的方法”,发现网上大部分都是如下的代码: #define PI 3.14159265 static double Rc = 6378137;  // 赤道半径 static double Rj = 6356725;  // 极半径 class JWD { public: double m_Longitude, m_Latitude; double m_RadLo, m_RadLa; double Ec; double Ed; public: JWD(doub

通过经纬度坐标计算距离的方法(经纬度距离计算)

http://home.juedui100.com/user/23468184.htmlhttp://home.juedui100.com/user/23771088.htmlhttp://home.juedui100.com/user/24018651.htmlhttp://home.juedui100.com/user/23875372.htmlhttp://home.juedui100.com/user/23874288.htmlhttp://home.juedui100.com/user

java工具类 六 根据经纬度计算距离

Java实现根据经纬度计算距离 在项目开发过程中,需要根据两地经纬度坐标计算两地间距离,所用的工具类如下: Demo1: public static double getDistatce(double lat1, double lat2, double lon1, double lon2) { double R = 6371; double distance = 0.0; double dLat = (lat2 - lat1) * Math.PI / 180; double dLon = (lo

地理空间距离计算及优化(根据两个点经纬度计算距离)

1.地理空间距离计算面临的挑战 打开美团app,不管是筛选团购还是筛选商家,默认的排序项都是"离我最近"或者"智能排序"(如下图所示). 不管是"离我最近"还是"智能排序",都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的参数参与排序打分).以筛选商家为例,北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+所有品类+离我最近/智能排序时,我们筛选服务需要计

sql 坐标距离排序计算距离(转)

如果两个坐标的列是(x1,y1).(x2,y2),那么他们之间的距离:SQRT((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)) sql排序 SELECT * FROM m_store ORDER BY SQRT((121.517759-`longitude`)*(121.517759-`longitude`)+(31.178469-`latitude`)*(31.178469-`latitude`)) PHP计算距离 /***求两个已知经纬度之间的距离,单位为米*@param

地理空间距离计算及优化(依据两个点经纬度计算距离)

1.地理空间距离计算面临的挑战 打开美团app.无论是筛选团购还是筛选商家,默认的排序项都是"离我近期"或者"智能排序"(例如以下图所看到的). 无论是"离我近期"还是"智能排序".都涉及到计算用户位置与各个团购单子或者商家的距离(注:在智能排序中距离作为一个重要的參数參与排序打分).以筛选商家为例.北京地区有5~6w个POI(本文将商家称之为POI),当用户进入商家页,请求北京全城+全部品类+离我近期/智能排序时.我们筛选服

根据经纬度和半径计算经纬度范围,根据两点经纬度计算距离

这些经纬线是怎样定出来的呢?地球是在不停地绕地轴旋转(地轴是一根通过地球南北两极和地球中心的假想线),在地球中腰画一个与地轴垂直的大圆圈,使圈上的每一点都和南北两极的距离相等,这个圆圈就叫作“赤道”.在赤道的南北两边,画出许多和赤道平行的圆圈,就是“纬圈”:构成这些圆圈的线段,叫做纬线.我们把赤道定为纬度零度,向南向北各为90度,在赤道以南的叫南纬,在赤道以北的叫北纬.北极就是北纬90度,南极就是南纬90度.纬度的高低也标志着气候的冷热,如赤道和低纬度地地区无冬,两极和高纬度地区无夏,中纬度地区