调用第三方获取两点坐标距离

来源:互联网 发布:南京软件测试薪资 编辑:程序博客网 时间:2024/06/07 04:07
/** * WpnMap.java * 版权所有(C) 2012  * 创建:cuiran 2012-09-04 09:29:45 */package com.wpnmap.map;import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Iterator;import java.util.List;import com.wpnmap.bean.TaxiInfo;import com.wpnmap.util.DistanceComparator;import com.wpnmap.util.Dom4jUtil;import com.wpnmap.util.WebClient;import com.wpnmap.util.WpnConfig;/** *  * 计算两点坐标之间距离 * @author cuiran * @version 1.0 */public class WpnMap {/** *  * TODO * @param x1 起点x1坐标 * @param y1 起点y1坐标 * @param taxis 对应出租车坐标的集合 不能为空 * @param resNum 需要取出的数目 resNum=0 取出全部   resNum>0 and resNum<size 取出resNum个 * @return List<TaxiInfo> */public static List<TaxiInfo> getListRoadLength(String x1,String y1,List<TaxiInfo> taxis,int resNum){ List<TaxiInfo> list=new ArrayList<TaxiInfo>(); List<TaxiInfo> list0=new ArrayList<TaxiInfo>();try{StringBuffer strX = new StringBuffer();StringBuffer strY = new StringBuffer();Iterator<TaxiInfo> it=taxis.iterator();while(it.hasNext()){TaxiInfo info=it.next();strX.append(x1+","+info.getX()+",");strY.append(y1+","+info.getY()+",");}StringBuffer str = new StringBuffer();String x=strX.toString();String y=strY.toString();x=x.substring(0, x.length()-1);y=y.substring(0, y.length()-1);str.append(WpnConfig.url)   .append("?config=CDR")   .append("&xs="+x)   .append("&ys="+y)   .append("&resType=XML")   .append("&enc=gbk")   .append("&routeType=1")   .append("&a_k="+WpnConfig.key);String result = WebClient.GetWebContent(str.toString(),"gbk");List<String> listLen=Dom4jUtil.getListRoadLength(result);for(int i=0;i<listLen.size();i++){TaxiInfo info=taxis.get(i);info.setDistance(listLen.get(i));list.add(info);} Comparator<TaxiInfo> ascComparator = new DistanceComparator();  // 利用Collections类静态工具方法对集合List进行排序  Collections.sort(list, ascComparator);  if(resNum>0&&resNum<=list.size()){  for(int i=0;i<resNum;i++){  list0.add(list.get(i));  }  }else{  list0=list;  }  }catch (Exception e) {e.printStackTrace();}return list0;}/** *  * 计算两点坐标距离 * @param x1 起点x1坐标 * @param y1 起点y1坐标 * @param x2 起点x2坐标 * @param y2 起点y2坐标 * @return */public  String getDistance(String x1,String y1,String x2,String y2){String distance="0";try{StringBuffer str = new StringBuffer();str.append(WpnConfig.url)   .append("?config=CD")   .append("&x1="+x1)   .append("&y1="+y1)   .append("&x2="+x2)   .append("&y2="+y2)   .append("&resType=XML")   .append("&enc=gbk")   .append("&a_k="+WpnConfig.key);String xml;xml = WebClient.GetWebContent(str.toString(),"gbk");distance=Dom4jUtil.getDistance(xml);}catch (Exception e) {e.printStackTrace();}return distance;}/** * TODO * @param args */public static void main(String[] args) {// TODO Auto-generated method stub}}