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