java 实现百度地图的地址解析及在数据库的读取存储过程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 实现百度地图的地址解析及在数据库的读取存储过程相关的知识,希望对你有一定的参考价值。

  package action;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Map;

public class LocationUtil {

        private static final String ak = "XG8Ed4Vi6BN67wrmFLc7x63oYOayXIR1";
        
        /**
        * 返回输入地址的经纬度坐标 key lng(经度),lat(纬度)
        */
        public static Map<String, String> getLatitude(String address) {
                try {
                        // 将地址转换成utf-8的16进制
                        address = URLEncoder.encode(address, "UTF-8");
                        // 如果有代理,要设置代理,没代理可注释
                        // System.setProperty("http.proxyHost","192.168.172.23");
                        // System.setProperty("http.proxyPort","3209");
                                                          
                        URL resjson = new URL("http://api.map.baidu.com/geocoder/v2/?callback=renderOption&output=json&address="
                                        + address + "&city=广州市&output=json&ak=" + ak);
                      //  System.out.println(resjson);
                        BufferedReader in = new BufferedReader(new InputStreamReader(resjson.openStream()));
                        String res;
                        StringBuilder sb = new StringBuilder("");
                        while ((res = in.readLine()) != null) {
                                sb.append(res.trim());
                        }
                        in.close();
                        String str = sb.toString();
                        //System.out.println("return json:" + str);
                        if(str!=null&&!str.equals("")){
                                Map<String, String> map = null;
                                int lngStart = str.indexOf("\"lng\"");
                                int lngEnd = str.indexOf(",\"lat\"");
                                int latEnd = str.indexOf("},\"precise");
                                if (lngStart > 0 && lngEnd > 0 && latEnd > 0) {
                                        String lng = str.substring(lngStart + 6, lngEnd);
                                        String lat = str.substring(lngEnd + 7, latEnd);
                                        map = new HashMap<String, String>();
                                        map.put("lng", lng);
                                        map.put("lat", lat);
                                        return map;
                                }
                        }
                } catch (Exception e) {
                        e.printStackTrace();
                }
                return null;
        }
           
        public static void main(String args[]) {
                
                Map<String, String> map = LocationUtil.getLatitude("越秀区人民中路1号");
                if (null != map) {
                        System.out.println(map.get("lng"));
                        System.out.println(map.get("lat"));
                }
        }
}

 

package action;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Map;

public class JDBC {

        public static void main(String[] args) {

                Connection connection = null;
                Statement statement = null;
                try {
                        //1、加载数据库驱动
                        Class.forName("oracle.jdbc.OracleDriver");
                        //2、创建数据库连接
                        String url = "jdbc:oracle:thin:@localhost:1520:orcl";
                        connection = DriverManager.getConnection(url, "scot", "tiger");
                        
                        //3、进行数据库操作
                        statement = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);//Oracle数据库需要设置才能进行updata
                        ResultSet rs = statement.executeQuery("select djxh,dz,gps from t_location");//sql语句中出现多余的标点符号 ;,  会报错无效字符
                        LocationUtil locationUtil=new LocationUtil();
                        while(rs.next()){
                           // System.out.println(rs.toString());
                            String a=rs.getNString("djxh");
                            String bString=rs.getNString("dz");
                           Map  cString=locationUtil.getLatitude(bString);
                            String dString =cString .get("lng").toString()+","+cString.get("lat").toString();/得到经纬度
                            //System.out.println(dString);
                            rs.updateString("gps",dString);//存入数据库
                            rs.updateRow();
                            System.out.println(rs.getNString("dz")+" : "+rs.getNString("gps"));
                            
                     
                   
                        }
                        rs.close();
                        
                } catch (Exception e) {
                        e.printStackTrace();
                } finally {
                        //4、关闭连接
                        try {
                                if(statement != null){
                                        statement.close();
                                }
                                if(connection != null){
                                        connection.close();
                                }
                        } catch (SQLException e) {
                                e.printStackTrace();
                        }
                }
        }

}

 








































以上是关于java 实现百度地图的地址解析及在数据库的读取存储过程的主要内容,如果未能解决你的问题,请参考以下文章

百度地图地址解析/逆地址解析

百度地图地址解析/逆地址解析

怎么用程序通过百度地图API批量获取具体地址的经纬度

怎么用程序通过百度地图API批量获取具体地址的经纬度

百度地图 逆地址解析

怎么用程序通过百度地图API批量获取具体地址的经纬度