Web 开发中地图使用——经纬度转具体地名

这里使用高德地图的经纬度转具体的地名

(1)通过ajax 进行获取

获取结果

(2)通过Java

环境:

这里使用Maven管理

                <dependency>
		        <groupId>commons-lang</groupId>
		    <artifactId>commons-lang</artifactId>
		    <version>2.5</version>
		</dependency>
		<dependency>
		    <groupId>net.sf.ezmorph</groupId>
		    <artifactId>ezmorph</artifactId>
		    <version>1.0.6</version>
		</dependency><dependency>
                <groupId>net.sf.json-lib</groupId>
                    <artifactId>json-lib</artifactId>
                    <version>2.4</version>
                </dependency>

通过高德地图Api提供的url 获取数据

Util 类:

import java.io.BufferedReader;  
import java.io.File;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.net.HttpURLConnection;  
import java.net.MalformedURLException;  
import java.net.URL;  
  
public class HttpDownloader {  
    private URL url = null;  
    /** 
     * 根据提供的URL地址下载文件,所下载的文件必须是文本文件。 
     * *************************************************** 
     * 1、创建一个URL对象 
     * 2、通过URL对象,创建一个HttpURLConnection对象 
     * 3、通过HttpURLConnection对象,得到一个InputStream 
     * 4、从InputStream中读取数据 
     * *************************************************** 
     * @param url 需要下载的文件的URL 
     * @return 返回所下载文件的内容 
     */  
    public String download(String urlStr) {  
        StringBuffer sb = new StringBuffer();  
        String line = null;  
        BufferedReader buffer = null;  
        InputStream input = null;  
                  
        try {  
            //使用getInputStreamFromUrl得到一个InputStream  
            input = this.getInputStreamFromUrl(urlStr);  
            //使用IO流读取数据  
            buffer = new BufferedReader(new InputStreamReader(input));  
            while((line = buffer.readLine()) != null) {  
                sb.append(line);  
            }  
        } catch (MalformedURLException e) {  
            e.printStackTrace();  
        } catch (IOException e) {  
            e.printStackTrace();  
        } finally {  
            //关闭相关的资源  
            try {  
                if(buffer != null) {  
                    buffer.close();  
                    buffer = null;  
                }  
                if(input != null) {  
                    input.close();  
                    input = null;  
                }     
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }  
          
        return sb.toString();  
    }  

    /** 
     * 根据URL得到HttpURLConnection的输入流 
     * @param urlStr 代表url的字符串 
     * @return 返回一个输入流 
     * @throws MalformedURLException, IOException  
     */  
    public InputStream getInputStreamFromUrl(String urlStr)   
            throws MalformedURLException, IOException {  
        //通过传入的urlStr字符串对象创建一个URL对象  
        url = new URL(urlStr);  
        //通过创建的URL对象创建一个Http连接  
        HttpURLConnection urlConn = (HttpURLConnection)url.openConnection();  
        //通过Http连接得到一个输入流  
        InputStream input = urlConn.getInputStream();  
        return input;  
    }  
} 

解析Util

package com.thinkgem.jeesite.modules.user.util;

import org.apache.bcel.generic.NEW;

import com.thinkgem.jeesite.modules.user.test.HttpDownloader;

/***
 * Map 解析工具
 * @author Mike.zhang
 *
 */
public class MapAnalysisUtil {
	/***
	 * 通过经纬度,获取具体地址;(powerby 高德地图)
	 * @param jwd 纬度
	 * @return
	 * @throws Exception
	 */
    public static String getAmapByLngAndLat(String jwd){
        String url;
        try {
            url = "http://restapi.amap.com/v3/geocode/regeo?key=自己的key&location="+jwd+"&radius=10&extensions=base&batch=false&roadlevel=0";
            HttpDownloader httpDownloader = new HttpDownloader();
            String result = httpDownloader.download(url);
            if (result==null){
                return "-1";
            }
            //将获取结果转为json 数据
            net.sf.json.JSONObject obj = net.sf.json.JSONObject.fromObject(result);
            if (obj.get("status").toString().equals("1")) {
            	//如果没有返回-1
                net.sf.json.JSONObject regeocode = obj.getJSONObject("regeocode");
                if(regeocode.size()>0){
                	// 在regeocode中拿到 formatted_address 具体位置             
                    String formatted = regeocode.get("formatted_address").toString();  
                    return new String(formatted.getBytes("GBK"),"UTF-8");

                }else{
                    System.out.println("未找到相匹配的地址!");               
                    return "-1";

                }
            } else {
                System.out.println("请求错误!");
                return "-1";
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return  "-1";
    }
    public static void main(String[] args) throws Exception {
    	String amapByLngAndLat = getAmapByLngAndLat("112.58006,32.94164");
		System.out.println(amapByLngAndLat);
	}
}

转载自:https://blog.csdn.net/qq_34160679/article/details/80703925

You may also like...