Java后台通过传参得到对应的坐标值的方法

public List<String> getMap(String address, String city) {
String returnXml="";
List<String> list=new ArrayList<String>();
try {
address=URLEncoder.encode(address, "UTF-8");
city=URLEncoder.encode(city, "UTF-8");
String urls="http://api.map.baidu.com/geocoder/v2/?ak=07dbeabb4d734364eea7f2eb49eb472b&callback=renderOption&output=xml&address="+address+"&city="+city;
URL url =new URL(urls);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5*1000);
conn.setRequestMethod("GET");

//解析返回来的xml消息体
byte[] msgBody = null;
if (conn.getResponseCode() != 200){
System.out.println("error");
}
InputStream is = (InputStream) conn.getInputStream();//获取返回数据

byte[] temp = new byte[1024];
int n = 0;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
while ((n = is.read(temp)) != -1)
{
bos.write(temp, 0, n);
}
msgBody = bos.toByteArray();
bos.close();
is.close();
returnXml= new String(msgBody, "UTF-8").trim();
conn.disconnect();

// 以下解析XML
System.out.println(returnXml);
Map<String, String> map=new HashMap<String, String>();
SAXReader reader=new SAXReader();
Document document = reader.read(new ByteArrayInputStream(returnXml.getBytes("UTF-8")));
Element rootelement = document.getRootElement();
for (Iterator iterator = rootelement.elementIterator(); iterator.hasNext();) {
Element root = (Element) iterator.next();
for (Iterator iterator1 =root.elementIterator(); iterator1.hasNext();) {
Element it = (Element) iterator1.next();
for (Iterator iterator2 = it.elementIterator(); iterator2.hasNext();) {
Element it1 = (Element) iterator2.next();
if(it1.getName()=="lat"){
String name = it1.getName();
String text = it1.getTextTrim();
map.put(name, text);
}if(it1.getName()=="lng"){
String name = it1.getName();
String text = it1.getTextTrim();
map.put(name, text);
}
}
}
}
for (String key : map.keySet()) {
list.add(map.get(key));
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}

我这个传过来的参数是省(市)和具体地址,返回得到的是一个xml文件。通过解析xml得到相对应的坐标值,返回的还可以是一个json格式的文件,像下面给出的例子:

private void convertGps2Baidu(List<DBObject> gpsData) {

String ak = configProperties.getProperty("map_ak");
// String ak = "07dbeabb4d734364eea7f2eb49eb472b";
String from = "1";
String to = "5";

String url = configProperties.getProperty("map_url");
// String url = "http://api.map.baidu.com/geoconv/v1/";
Resty r = new Resty();

int maxCount = 100;

int loopCount = gpsData.size() / maxCount;
if (gpsData.size() % maxCount > 0) {
loopCount++;
}

for (int i = 0; i < loopCount; i++) {
String gps = "";

for (int j = 0; j < maxCount; j++) {
int k = j + (i * maxCount);
if (k >= gpsData.size()) {
break;
}

DBObject dbObj = gpsData.get(k);
DBObject gpsObj = (DBObject) dbObj.get("gps");
gps += gpsObj.get("latitude").toString() + "," + gpsObj.get("longitude").toString() + ";";
}

// 去掉最后的分号
if (gps.length() > 0) {
gps = gps.substring(0, gps.length() - 1);
}

JSONResource obj;
try {
obj = r.json(url,
form(data("coords", gps), data("ak", ak), data("from", from), data("to", to)));
int status = (Integer) obj.get("status");
if (status == 0) {
JSONArray baiduGps = (JSONArray) obj.get("result");
for (int j = 0; j < baiduGps.length(); j++) {
DBObject baiduObj = gpsData.get(j + (i * maxCount));
JSONObject baiduMap = (JSONObject) baiduGps.get(j);
DBObject baiduMongoObj = new BasicDBObject();
baiduMongoObj.put("x", baiduMap.get("x"));
baiduMongoObj.put("y", baiduMap.get("y"));
baiduMongoObj.put("s", ((DBObject)baiduObj.get("gps")).get("vss"));

baiduObj.put("b_gps", baiduMongoObj);
//vehDataDao.saveGpsData(baiduObj);
}
} else {
logger.error("baidu GPS convert Error.... status=" + status);
logger.error("GPS row string: " + gps);
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}

时间: 2024-10-06 05:08:37

Java后台通过传参得到对应的坐标值的方法的相关文章

[Java]_函数传参的疑惑与思考

问题来源于leetcode上的两道题 Path Sum I && II,分别写了两个dfs. 1 void dfs(TreeNode node , int sum , ArrayList<Integer> curPath) 2 void dfs(TreeNode node , int sum , boolean ifExist) 问题:在1号中我可以在方法中修改curPath,在结束函数调用时,变量修改仍然生效.   在2号问题中,我即使在函数中修改了ifExist,结束函数调

java复用和传参

java复用和传参的三种方法总结: (1) 直接在一个类中调用函数 : 1 package test1; 2 3 public class a 4 { 5 public static void getDate() 6 { 7 System.out.println("晨落梦公子"); 8 } 9 public static void main(String[] agrs) 10 { 11 getDate(); 12 } 13 } 这种方法应注意主函数中的调用的的getDate()必须声明

浅谈 c++/java/javascript 之传参

本文主要梳理了几种语言的传参机制,即关于 传值.传引用 之争 最近开始学node.js搭后端服务器时,碰到这样一句话 java只有一种传参机制就是传值 javascript其大部分语法规范取自于JAVA语法规范, 那么这种句话也适用于它,于是也有  javascript只有一种传参机制就是传值 为了理解这句话,我从个人感觉较为接近底层的语言c++写一些测试,代码如下 #include<iostream> using namespace std; class Test { public: int

Java函数的传参机制

一 最近的一个项目,里面各种返回void,参数用引用类型,那叫一个熟和多,但是也把我绕糊涂了. 我就打算好好理一理java的传参机制,整理一番 二 很多人一听Java的传参,那一定会脱口而出,java都是值传递的.恭喜各位,答对了. 那么,传的是什么值? 如果参数类型是原始类型,那么传过来的就是这个参数的一个副本,也就是这个原始参数的值,这个跟之前所谈的传值是一样的.如果在函数中改变了副本的值不会改变原始的值. 如果参数类型是引用类型,那么传过来的就是这个引用参数的副本,这个副本存放的是参数的地

Java接口实现传参

package com.gezhi.interfaces;/** * 新建一个dog类实现接口livingable(狗吃和上厕所都是与生俱来的不应该写成接口) * @author square 凉 * */public class Dog implements Livingable{ private String dogName; private int dogAge;  public String getDogName() {  return dogName; } public void se

java 后台上传文件

public static String uploadFile(File file, String RequestURL) throws IOException { String result = null; String BOUNDARY = "letv"; // 边界标识 随机生成 String PREFIX = "--", LINE_END = "\r\n"; String CONTENT_TYPE = "multipart/fo

Java命令行传参

目的: 在运行一个程序时候再传递给它消息,这就需要传递命令参数给main()函数实现:即main()方法可以传递数据 例: public class demo{ public static void main(String[] args){ for(int i=0;i<args.length;i++){ System.out.println("arg["+i+"]:"+args[i]); } } } 命令行最好在src目录下运行  ,示例: 原文地址:http

传参,计数的另一种方法

func_num_args函数功能– 返回传递到函数的参数数目,其语法如下 : int func_num_args (void ). 说明 : 返回传递到目前定义函数的参数数目.如果是从函数定义的外面来呼叫此函数,则func_get_arg( )将会产生警告. func_num_args( )可以用来结合func_get_arg( )和func_get_args( )来允许使用者定义的函式接受variable-length参数列表. func_get_arg( )从参数列表返回项目,其语法:in

Java自学-类和对象 传参

Java中的传参 变量有两种类型 基本类型 和类类型 参数也是变量,所以传参分为 基本类型传参 类类型传参 步骤 1 : 基本类型传参 基本类型传参 在方法内,无法修改方法外的基本类型参数 public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度 public Hero(){ } //回血 public void huixue(int xp){ hp = hp + xp