首先,我需要从文本文档里获取地址信息
package com.tech.lgyj;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import com.tech.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.tech.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());
// }
}