https://lbs.qq.com/dev/console/quota/manage
腾讯位置服务:登录腾讯位置服务---》进行注册,登录---》创建密钥
1.根据经纬度来获取对应的省市区
package com.sjqm.utils;
import net.sf.json.JSONObject;
import org.apache.commons.lang.StringUtils;
import javax.net.ssl.*;
import java.io.*;
import java.net.URL;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
public class JingWeiUtil {
/**
* 通过腾讯地图将经纬度转成详细地址
*
* @param lat 纬度
* @param lng 经度
* @return
*/
public static JSONObject getLatAndLng(String lat, String lng) {
try {
String hsUrl = "https://apis.map.qq.com/ws/geocoder/v1/?location=" + lat + "," + lng + "&key=BLZBZ-MYO6J-2IGFJ-FQZF7-B7JHQ" + "&get_poi=1";
URL url;
url = new URL(hsUrl);
HttpsURLConnection con = (HttpsURLConnection) url.openConnection();
con.setRequestMethod("GET");// 提交模式
X509TrustManager xtm = new X509TrustManager() {
@Override
public X509Certificate[] getAcceptedIssuers() {
// TODO Auto-generated method stub
return null;
}
@Override
public void checkServerTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
@Override
public void checkClientTrusted(X509Certificate[] arg0, String arg1)
throws CertificateException {
// TODO Auto-generated method stub
}
};
TrustManager[] tm = {xtm};
SSLContext ctx = SSLContext.getInstance("TLS");
ctx.init(null, tm, null);
con.setSSLSocketFactory(ctx.getSocketFactory());
con.setHostnameVerifier(new HostnameVerifier() {
@Override
public boolean verify(String arg0, SSLSession arg1) {
return true;
}
});
InputStream inStream = con.getInputStream();
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while ((len = inStream.read(buffer)) != -1) {
outStream.write(buffer, 0, len);
}
byte[] b = outStream.toByteArray();//网页的二进制数据
outStream.close();
inStream.close();
String rtn = new String(b, "utf-8");
if (StringUtils.isNotBlank(rtn)) {
JSONObject object = JSONObject.fromObject(rtn);
if (object != null) {
if (object.has("status") && object.getInt("status") == 0) {
JSONObject result = JSONObject.fromObject(object.get("result"));
if (result != null) {
JSONObject addressComponent = JSONObject.fromObject(result.get("address_component"));
if (addressComponent != null) {
return addressComponent;
}
}
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
// public static void main(String[] args) {
//
// String url="https://restapi.amap.com/v3/geocode/geo?key=02996e5a78db59f23ee440f1e9b1a03c&address=滨江区&city=杭州市&batch=true"; -ZHBHX
//
// System.out.println(getLatAndLng("39.984154", "116.307490"));
// System.out.println(getLatAndLng("39.984154", "116.307490").getString("province"));
// }
}
2.根据省市区来获得对应的经纬度
package com.sjqm.util;
import net.sf.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
public class GetJingWeiByCityUtil {
public static String getURLContent(String urlStr) {
//请求的url
URL url = null;
//请求的输入流
BufferedReader in = null;
//输入流的缓冲
StringBuffer sb = new StringBuffer();
try {
url = new URL(urlStr);
in = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
String str = null;
//一行一行进行读入
while ((str = in.readLine()) != null) {
sb.append(str);
}
} catch (Exception ex) {
} finally {
try {
if (in != null) {
in.close(); //关闭流
}
} catch (IOException ex) {
}
}
String result = sb.toString();
return result;
}
// public static void main(String[] args) {
// String s = getURLContent("https://apis.map.qq.com/ws/geocoder/v1/?address=浙江省杭州市滨江区&key=BLZBZ-MYO6J-2IGFJ-FQZF7-ZHBHX");
// JSONObject object = JSONObject.fromObject(s); -B7JHQ
// JSONObject result=JSONObject.fromObject(object.get("result"));
// JSONObject location=JSONObject.fromObject(result.get("location"));
// System.out.println(location.get("lng")+"----"+location.get("lat"));
// }
public static JSONObject getLngAndLat(String address) {
String s = getURLContent("https://apis.map.qq.com/ws/geocoder/v1/?address=" + address + "&key=BLZBZ-MYO6J-2IGFJ-FQZF7-ZHBHX");
System.out.println(s);
JSONObject object = JSONObject.fromObject(s);
if (object != null) {
JSONObject result = JSONObject.fromObject(object.get("result"));
if (result != null) {
if (result.containsKey("location")) {
JSONObject location = JSONObject.fromObject(result.get("location"));
System.out.println(location.get("lng") + "----" + location.get("lat"));
return location;
}
} else {
return null;
}
} else {
return null;
}
return null;
}
}
本文介绍了如何通过腾讯位置服务进行经纬度与省市区之间的转换。首先,需要在腾讯位置服务平台注册并创建密钥。然后,可以使用服务提供的接口,根据经纬度获取对应的省市区信息,反之亦然。
8789

被折叠的 条评论
为什么被折叠?



