百度地图sdk之 Geocoding API

Geocodding API的 官网地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding

json示例:
http://api.map.baidu.com/geocoder/v2/?ak=E4805d16520de693a3fe707cdc962045&callback=renderReverse&location=39.983424,116.322987&output=json&pois=1
首先,解释一下上面的url,
ak=百度密匙(根据AK的不同url所带的参数也不同http://api.map.baidu.com/geocoder/v2/?ak=pA2N9r3tH7RFaElIfst6CzlY&callback=renderReverse&location=39.949152,116.443112&output=json&pois=1 ,是不需要参数mcode的)
callback=renderReverse 好像是固定格式
location=39.983424,116.322987 这是纬度和经度
output=返回json或者xml
这里的示例里面并没有提到关于MCODE参数. 就这样直接使用的话,会发现服务器返回如下错误
{“status”:102,”message”:”MCODE参数不存在,mobile类型mcode参数必需”}

后来我发现,其实在ak的后面需要加一个mcode参数,这个参数里面的内容是”SHA1;包名”
eg:http://api.map.baidu.com/geocoder/v2/?

ak=xxxx&

mcode=A:AB:03:E3:62:0B:BF:05:F6:6E;com.xxxx.app.util&

callback=renderReverse&location=39.984578

,116.451345&output=json&pois=1

可能出现的问题,根据返回的string 对象创建Json数据时出现错误,即:
JSONObject obj = new JSONObject(jsonStr);
一个简简单的json解析居然报错!!并且json字符串没错!!!!
是因为UTF-8的BOM头。
解决办法是:

public String JSONTokener(String in) {
// consume an optional byte order mark (BOM) if it exists
if (in != null && in.startsWith(“\ufeff”)) {
in = in.substring(1);
}
return in;
}
SONObject obj = new JSONObject(JSONTokener(jsonStr));
就可以了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值