调用第三方获取两点坐标距离
来源:互联网 发布:南京软件测试薪资 编辑:程序博客网 时间: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}}