gps定位 java_javaweb实现百度GPS定位接口(经纬度)

该博客展示了如何使用Java实现调用百度地图的GPS定位接口,通过经纬度获取具体的地理位置信息。首先配置了AK和APP_ID,然后分别演示了GPS接口和IP接口的调用方法,包括URL的构造、HTTP请求的发送以及解析返回的JSON数据。
摘要由CSDN通过智能技术生成

importjava.util.Map;importjava.util.regex.Matcher;importjava.util.regex.Pattern;importorg.apache.commons.lang.StringUtils;importorg.apache.log4j.Logger;importcom.webber.cm.common.util.HttpClient;importcom.webber.cm.common.util.JsonUtil;public classBaiduWebAPI {static Logger logger = Logger.getLogger(BaiduWebAPI.class);//配置地址:http://lbsyun.baidu.com/apiconsole/key

private static final String APP_ID = "18**********";private static final String AK = "XGXnh8tB7e*******************";public static voidmain(String[] args) {//BaiduWebAPI.ipLocation("127.0.0.1");

BaiduWebAPI.gpsLocation("116.840213","39.196272");

}//GPS接口

public staticString gpsLocation(String lng, String lat) {

String result= null;try{

String url= "http://api.map.baidu.com/reverse_geocoding/v3/?ak=MY_AK&output=json&coordtype=wgs84ll&location=LAT_VALUE,LNG_VALUE";

url= url.replace("MY_AK", AK).replace("LNG_VALUE", lng).replace("LAT_VALUE", lat);

String reqResult=HttpClient.doGet(url);

System.out.println(reqResult);

Map map =JsonUtil.parseJSON2Map(reqResult);

Map ac= (Map) ((Map) map.get("result")).get("addressComponent");

result= ac.get("city").toString() + ac.get("district").toString();

}catch(Exception e) {

logger.error("GPS接口异常:", e);

}

logger.info("GPS接口:{lng:" + lng + ",lat:" + lat + ",result:" + result + "}");returnresult;

}//IP接口

public staticString ipLocation(String ip) {if(BaiduWebAPI.isLan(ip)) {return "内网IP";

}

String result= null;try{

String url= "http://api.map.baidu.com/location/ip?ak=MY_AK&ip=IP_VALUE&coor=bd09ll";

url= url.replace("MY_AK", AK).replace("IP_VALUE", ip);

String reqResult=decodeUnicode(HttpClient.doGet(url));

System.out.println(reqResult);

Map map =JsonUtil.parseJSON2Map(reqResult);

result=((Map) map.get("content")).get("address").toString();

result=result.replace("省", "").replace("市", "");

}catch(Exception e) {

logger.error("IP接口异常:", e);

}

logger.info("IP接口:{ip:" + ip + ",result:" + result + "}");returnresult;

}//unicode转化汉字

public static String decodeUnicode(finalString unicode) {

StringBuffer string= newStringBuffer();

String[] hex= unicode.split("\\\\u");for (int i = 0; i < hex.length; i++) {try{//汉字范围 \u4e00-\u9fa5 (中文)

if (hex[i].length() >= 4) {//取前四个,判断是否是汉字

String chinese = hex[i].substring(0, 4);try{int chr = Integer.parseInt(chinese, 16);boolean isChinese = isChinese((char) chr);//转化成功,判断是否在 汉字范围内

if (isChinese) {//在汉字范围内//追加成string

string.append((char) chr);//并且追加 后面的字符

String behindString = hex[i].substring(4);

string.append(behindString);

}else{

string.append(hex[i]);

}

}catch(NumberFormatException e1) {

string.append(hex[i]);

}

}else{

string.append(hex[i]);

}

}catch(NumberFormatException e) {

string.append(hex[i]);

}

}returnstring.toString();

}/*** 判断是否为中文字符

*

*@paramc

*@return

*/

public static boolean isChinese(charc) {

Character.UnicodeBlock ub=Character.UnicodeBlock.of(c);if (ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS|| ub ==Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A|| ub ==Character.UnicodeBlock.GENERAL_PUNCTUATION|| ub ==Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION|| ub ==Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {return true;

}return false;

}//是否为局域网

private staticBoolean isLan(String ip) {if("127.0.0.1".equals(ip)) {return true;

}if (!StringUtils.isEmpty(ip) && ip.length() > 15) {

ip= ip.substring(0, ip.indexOf(","));

}/** 判断客户单IP地址是否为内网地址

* 内网IP网段:

* 10.0.0.0-10.255.255.255

* 172.16.0.0-172.31.255.255

* 192.168.0.0-192.168.255.255*/String reg= "^(192\\.168|172\\.(1[6-9]|2\\d|3[0,1]))(\\.(2[0-4]\\d|25[0-5]|[0,1]?\\d?\\d)){2}$|^10(\\.([2][0-4]\\d|25[0-5]|[0,1]?\\d?\\d)){3}$";

Pattern p=Pattern.compile(reg);

Matcher matcher=p.matcher(ip);returnmatcher.find();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值