java从百度后台接口获取经纬度

首先,我需要从文本文档里获取地址信息

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());
//		}
	}

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值