• 根据百度地图API获取指定地点的经纬度


    做项目时,遇到对地点获取地图中对应的经纬度,作一下笔记,以备以后直接使用

    package com.hpzx.data;
    
    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 com.hpzx.json.HTTPTokener;
    import com.hpzx.json.JSONException;
    
    /**
     * 获取经纬度通过
     * 
     * @author jueyue 返回格式:Map<String,Object> map map.put("status",
     *         reader.nextString());//状态 map.put("result", list);//查询结果
     *         list<map<String,String>> 密钥:f247cdb592eb43ebac6ccd27f796e2d2
     */
    public class GetLatAndLngByBaidu {
    	/**
    	 * @param addr
    	 *            查询的地址
    	 * @return
    	 * @throws IOException
    	 */
    	public static 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 = "f247cdb592eb43ebac6ccd27f796e2d2";
    		String url = String
    				.format("http://api.map.baidu.com/geocoder?address=%s&output=json&key=%s",
    						address, key);
    		URL myURL = null;
    		URLConnection httpsConn = null;
    		try {
    			myURL = new URL(url);
    		} catch (MalformedURLException e) {
    			e.printStackTrace();
    		}
    
    		httpsConn = (URLConnection) myURL.openConnection();
    		// 不使用代理
    		if (httpsConn != null) {
    			InputStreamReader insr = null;
    
    			insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");
    
    			BufferedReader br = new BufferedReader(insr);
    			StringBuffer buf = new StringBuffer();
    			String data = null;
    			while ((data = br.readLine()) != null) {
    				buf.append(data.replace(":", ""));
    				// System.out.println(data);
    			}
    			try {
    				return getLoc(buf.toString());
    			} catch (JSONException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    		}
    		return null;
    
    	}
    
    	public static String getLoc(String string) throws JSONException {
    		StringBuffer buf = new StringBuffer();
    		HTTPTokener x = new HTTPTokener(string);
    		String t;
    		t = x.nextToken();
    		while (x.more()) {
    			t = x.nextToken();
    			if (t.equalsIgnoreCase("lng")) {
    				break;
    			}
    		}
    		if (t.equalsIgnoreCase("lng")) {
    			buf.append(x.nextToken());
    			if (x.nextToken().equals("lat")) {
    				buf.append(x.nextToken());
    			}
    			return buf.toString();
    		}
    		return null;
    	}
    
    	public void getCoordinate(String longitude, String latitude) {
    		String url = String
    				.format("http://api.map.baidu.com/geocoder?output=json&"
    						+ "location=%s,%s%s&key=f247cdb592eb43ebac6ccd27f796e2d2",
    						latitude, "%20", longitude);
    		URL myURL = null;
    		URLConnection httpsConn = null;
    		try {
    			myURL = new URL(url);
    		} catch (MalformedURLException e) {
    			e.printStackTrace();
    		}
    		try {
    			httpsConn = (URLConnection) myURL.openConnection();
    			if (httpsConn != null) {
    				InputStreamReader insr = new InputStreamReader(
    						httpsConn.getInputStream(), "UTF-8");
    				BufferedReader br = new BufferedReader(insr);
    				String data = null;
    				while ((data = br.readLine()) != null) {
    					System.out.println(data);
    				}
    				insr.close();
    			}
    		} catch (IOException e) {
    			e.printStackTrace();
    		}
    
    	}
    
    	public static void main(String[] args) throws IOException {
    		String str = "新疆维吾尔自治区哈密市南湖乡大南湖矿区";
    		GetLatAndLngByBaidu lotAndLng = new GetLatAndLngByBaidu();
    		String result = GetLatAndLngByBaidu.getCoordinate(str).replace(":", "");
    		System.out.println(result);
    		String[] loc = result.split(",");
    		lotAndLng.getCoordinate(loc[0], loc[1]);
    	}
    }
    
  • 相关阅读:
    对于Sobel算子的学习
    HDU 2594(求最长公共前后缀 kmp)
    HDU 6108(整除判断 数学)
    HDU 5968(异或计算 暴力)
    HDU 5963(游戏 博弈+规律)
    简单算法考题记录
    flex与bison
    C++ 智能指针
    Linux 添加设备驱动程序
    Linux 添加系统调用
  • 原文地址:https://www.cnblogs.com/yuwenfeng/p/3927291.html
Copyright © 2020-2023  润新知