一、首先你得申请开发者账号
二、添加应用,获取AK
设置成浏览器端,refer白名单如果不想设置成固定的网站可以调用,直接设置成星号*即可,不过会有风险,自己考虑
三、常用的浏览器端调用url格式"http://api.map.baidu.com/geocoder/v2/?ak=步骤二生成的AK&output=json&address=天津市"
四、浏览器调用步骤三设置好的api接口即可
获取到的 信息如下
成功
{"status":0,"result":{"location":{"lng":117.21081309155257,"lat":39.143929903310077},"precise":0,"confidence":12,"level":"城市"}}
失败
返回信息中出现app禁用的信息,参考步骤二,把应用类别设置成浏览器端,refer白名单设置成*五、json解析出lng和lat即可
转载
java版本的根据中文地址获取坐标的代码如下备注:json解析时,注意导入的JSONobject是Android还是java版本,这个地方容易出error
//请求百度地图坐标接口
public static Map<String,Double> getLngAndLat(String address){
Map<String,Double> map=new HashMap<String, Double>();
String url = "http://api.map.baidu.com/geocoder/v2/?address="+address+"&output=json&ak=DE1B2vE0ZkeiPV49jyjDAc0PNNRBUa0E";
String json = loadJSON(url);
//JSONObject obj = JSONObject.fromObject(json);
try{
JSONObject obj = new JSONObject(json);
if(obj.get("status").toString().equals("0")){
double lng=obj.getJSONObject("result").getJSONObject("location").getDouble("lng");
double lat=obj.getJSONObject("result").getJSONObject("location").getDouble("lat");
map.put("lng", lng);
map.put("lat", lat);
//System.out.println("经度:"+lng+"---纬度:"+lat);
}else{
//System.out.println("未找到相匹配的经纬度!");
}
}catch(Exception e){
e.printStackTrace();
}
return map;
}
public static String loadJSON (String url) {
StringBuilder json = new StringBuilder();
try {
URL oracle = new URL(url);
URLConnection yc = oracle.openConnection();
BufferedReader in = new BufferedReader(new InputStreamReader(
yc.getInputStream()));
String inputLine = null;
while ( (inputLine = in.readLine()) != null) {
json.append(inputLine);
}
in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}
return json.toString();
}
public static void getlat(String[] args){
/*把代码中的ak值(红色字部分)更改为你自己的ak值,在百度地图API中注册一下就有。
调用方式:*/
Map<String,Double> map=MyGet_1.getLngAndLat("北京市");
System.out.println("经度:"+map.get("lng")+"---纬度:"+map.get("lat"));
}