java從百度後臺介面獲取經緯度
阿新 • • 發佈:2019-02-12
首先,我需要從文字文件裡獲取地址資訊
package com.tongdatech.lgyj; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import com.tongdatech.lgyj.domain.Central; public class ReadMapTxt { public ArrayList<String> readFileByLines(String fileName) { BufferedReader reader = null; ArrayList<String> arrayList = new ArrayList<>(); try{ System.out.println("以行為單位讀取txt"); reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "gbk")); String tempString = null; int line = 1; //一次讀一行,直到讀入null為結束 while((tempString = reader.readLine()) != null) { String temp2 = tempString.replace(" ", ""); System.out.println("line " + line + ":" + temp2); Central central = new Central(); central.setAddress(temp2); arrayList.add(temp2); line++; } reader.close(); }catch(IOException e) { e.printStackTrace(); }finally { if(reader != null) { try { reader.close(); }catch(IOException e1) { e1.printStackTrace(); } } } return arrayList; } // public static void readFileByLines(String fileName) // { // BufferedReader reader = null; // // try{ // System.out.println("以行為單位讀取txt"); // reader = new BufferedReader(new InputStreamReader(new FileInputStream(fileName), "gbk")); // String tempString = null; // int line = 1; // //一次讀一行,直到讀入null為結束 // while((tempString = reader.readLine()) != null) // { // String temp2 = tempString.replace(" ", ""); // System.out.println("line " + line + ":" + temp2); // // Central central = new Central(); // central.setAddress(temp2); // // line++; // // } // // reader.close(); // }catch(IOException e) // { // e.printStackTrace(); // }finally { // if(reader != null) // { // try // { // reader.close(); // }catch(IOException e1) // { // e1.printStackTrace(); // } // } // } // } }
然後建立與百度介面的連結然後獲取經緯度並放在map裡
package com.tongdatech.lgyj; 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 java.util.HashMap; import java.util.Map; import com.alibaba.fastjson.JSONObject; //import net.sf.json.JSONObject; public class MapBaidu { public Map<String,Double> getLngAndLat(String address){ Map<String,Double> map=new HashMap<String, Double>(); String url = "http://api.map.baidu.com/geocoder/v2/?address="+address+"&output=json&ak=C5dae37ba0a97216555b8bf2b76bacfd"; String json = loadJSON(url); JSONObject obj = JSONObject.parseObject(json); if(obj.get("status").toString().equals("0")){ 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); }else{ System.out.println(address + "未找到相匹配的經緯度!"); } return map; } public 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(); } }
然後呼叫方法存入表裡
@Override @Transactional(rollbackFor={RuntimeException.class,Exception.class}) public Msg addLocation() { //獲取本地文字地址裡面的內容 String file_name = "C:/Users/Administrator/Desktop/江蘇省所有營業點地址111.txt"; ReadMapTxt mapTxt = new ReadMapTxt(); ArrayList<String> arrayList = mapTxt.readFileByLines(file_name); for(int i=0;i<arrayList.size();i++) { String address = arrayList.get(i); MapBaidu mapBaidu = new MapBaidu(); Map<String,Double> map = mapBaidu.getLngAndLat(address); Central central = new Central(); central.setAddress(address); if(map.get("lng") != null) { central.setLng(map.get("lng").toString()); central.setLat(map.get("lat").toString()); } int ret = centralMapper.addLocation(central); if (ret < 0) { return factory.failMsg("增加失敗"); } } return factory.successMsg("增加成功"); // TODO Auto-generated method stub // try { // for(int i=0;i < centrals.size();i++) // { // int ret = centralMapper.addLocation(centrals.get(i)); // if (ret < 0) { // return factory.failMsg("增加失敗"); // } // } // return factory.successMsg("增加成功"); // } catch (Exception e) { // // TODO: handle exception // throw new ManagedException(e.getMessage()); // } }