Java根据百度API获得经纬度

package com.monitoring.controllers;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.json.JSONObject;

import com.monitoring.common.util.CommonsUtil;
import com.monitoring.common.util.ResponseObject;

import net.paoding.rose.web.Invocation;
import net.paoding.rose.web.annotation.Path;
import net.paoding.rose.web.annotation.rest.Get;

@Path("/position")
public class LatAndLngByBaiduController {

	/**
	 * KEY:(开发者密钥).
	 * @since JDK 1.6
	 */
	private static final String KEY = "6rvfbX55tkIitRoMzcNsdegBzajdVab0";
	
	@Get("/getCoordinate")
	public String getCoordinate(Invocation inv) {

		String path = "hello world1";
		

		return "@" + CommonsUtil.returnObjectToJson(ResponseObject.newSuccessResponseObject(path));
	}

	/**
	 * @param addr
	 *            查询的地址
	 * @return
	 * @throws IOException
	 */
	private Map<String,String> getCoordinate(String addr) throws IOException {
		
		String address = null;
		try {
			address = java.net.URLEncoder.encode(addr, "UTF-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
//		String key = "6rvfbX55tkIitRoMzcNwfrgBzajdVBw0";
		String url = String.format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s", address, KEY);
		
		url = String.format("http://api.map.baidu.com/geocoder/v2/?address=%s&output=json&ak=%s",  address, KEY);
		
		URL myURL = null;
		URLConnection httpsConn = null;
		try {
			myURL = new URL(url);
		} catch (MalformedURLException e) {
			e.printStackTrace();
		}
		InputStreamReader insr = null;
		BufferedReader br = null;
		try {
			httpsConn = (URLConnection) myURL.openConnection();// 不使用代理
			if (httpsConn != null) {
				insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");
				br = new BufferedReader(insr);
				String data = null;
				StringBuilder sb = new StringBuilder();
				while ((data = br.readLine()) != null) {
					sb.append(data);
				}
				JSONObject object = new JSONObject(sb.toString());
				int status = object.getInt("status");
				if(0 == status) {
					
					JSONObject result = object.getJSONObject("result");
					JSONObject location = result.getJSONObject("location");
//					System.out.println(location);
					String lng =String.valueOf(location.get("lng"));// 经度
					String lat = String.valueOf(location.get("lat"));// 纬度
					
					Map<String, String> map = new HashMap<String, String>();
					map.put("lng", lng);
					map.put("lat", lat);
					return map;
				}
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (insr != null) {
				insr.close();
			}
			if (br != null) {
				br.close();
			}
		}
		return null;
	}

	public static void main(String[] args) throws IOException {
		LatAndLngByBaiduController getLatAndLngByBaidu = new LatAndLngByBaiduController();
		Map<String,String> map = getLatAndLngByBaidu.getCoordinate("杭州市");
		System.out.println(map.get("lng"));// 经度
		System.out.println(map.get("lat"));// 经度
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值