您的位置:首页 > 其它

百度通过经纬度获取地址

2016-07-14 11:16 253 查看
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;
import java.awt.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import com.alibaba.fastjson.*;
import com.mysql.jdbc.*;

public class TestHttp2 {

private String  adcode;
private String  country;
private String  province;
private String  city;
private String  district;

private static final List List = null;

public static void main(String[] args) throws Exception {
//    Map<String,String> map=getInformation(38.02500,114.51250);
//    System.out.println(map.get("adcode"));
//    System.out.println(map.get("country"));
//    System.out.println(map.get("province"));
//    System.out.println(map.get("city"));
//    System.out.println(map.get("district"));
linkdb();
}

public static  void linkdb() throws Exception{
String dburl = "jdbc:mysql://10.26.0.65:3306/lbs_db?useUnicode=true&characterEncoding=UTF-8";
String user = "root";
String password = "root";
PreparedStatement stmt = null;
Connection conn = null;
String prov1="河南省";
String city1="开封市";
String distr1="开封市市辖区";
try {
//1.驱动注册程序
Class.forName("com.mysql.jdbc.Driver");

//2.获取连接对象
conn = (Connection) DriverManager.getConnection(dburl, user, password);

//3.创建Statement
//stmt = (Statement) conn.createStatement();

//4.准备sql
//    String sql ="SELECT slat,slon FROM location";
String sql ="SELECT slat,slon FROM location WHERE distr=?";

//    String sql ="SELECT slat,slon FROM location WHERE prov=? AND  city=? AND  distr=?";
//    SELECT slat,slon FROM location  WHERE prov="河南省" AND city="开封市" AND distr="开封市市辖区"
stmt = conn.prepareStatement(sql);
//      stmt.setString(1,prov1);
//      stmt.setString(2,city1);
stmt.setString(1,distr1);

//5.发送sql语句,执行sql语句,得到返回结果
ResultSet rs =stmt.executeQuery();

//6.输出
//    System.out.println(rs);

//7.遍历结果
while(rs.next()){
//String lat = rs.getString("geoname_city_id");
double lat = rs.getDouble("slat");
double lng = rs.getDouble("slon");
Map<String,String> map=getInformation(lat,lng);

System.out.println(map.get("adcode")+map.get("country")+map.get("province")+map.get("city")+map.get("district"));
//System.out.println( lat+","+lng);
}

System.out.println("读取完毕");
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
} finally{
//8.关闭连接(顺序:后打开的先关闭)
if(stmt!=null)
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
if(conn!=null)
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}
}

//通过地址获取精度和纬度
public static  Map<String,String> getInformation(double lats,double lngs){
Map<String,String> map=new HashMap<String, String>();

String url = "http://api.map.baidu.com/geocoder/v2/?location="+lats+","+lngs+"&output=json&ak=427KpzmKIOnea6BCu8usfNGnfF6iRrYQ";

String json = loadJSON(url);
JSONObject obj = JSONObject.parseObject(json);

if(obj.get("status").toString().equals("0")){
String  adcode =obj.getJSONObject("result").getJSONObject("addressComponent").getString("adcode");
String  country =obj.getJSONObject("result").getJSONObject("addressComponent").getString("country");
String  province =obj.getJSONObject("result").getJSONObject("addressComponent").getString("province");
String  city =obj.getJSONObject("result").getJSONObject("addressComponent").getString("city");
String  district =obj.getJSONObject("result").getJSONObject("addressComponent").getString("district");
//    double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
//    double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
//     map.put("lng", lng);
//    map.put("lat", lat);
//System.out.println("经度:"+lng+"---纬度:"+lat);
map.put("adcode", adcode);
map.put("country", country);
map.put("province", province);
map.put("city", city);
map.put("district", district);

}else{
System.out.println("未找到相匹配的经纬度!");
}
return map;
}

public static String loadJSON (String url) {
StringBuilder json = new StringBuilder();
try {
URL oracle = new URL(url);
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine = null;
while ( (inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
return json.toString();

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