您的位置:首页 > 其它

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

2012-09-06 12:36 260 查看
/**
* 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

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: