关于百度地图API调用
2016-06-16 20:12
375 查看
今天做了一个关于百度地图接口的小项目,通过调用百度API:http://api.map.baidu.com/geocoder/v2/?ak=pmCgmADsAsD9rEXkqWNcTzjd&location=30.548397,104.04701&output=json&pois=1,其中ak是自己到百度注册一个开发者账号就可以拿到
返回的数据通过自己的封装就可以显示如下:
周围地点:------------附近情况--------------
地址:番禺区市桥南汇景大道
名称:汇庭雅苑
类型:房地产
标志:房地产
id:fa01e9372af45049764ff19c
坐标方向:内
距离:0米
电话:
======================
------------附近情况--------------
地址:汇景大道47
名称:百果园
类型:购物
标志:购物;超市
id:c66b9cf1356f3af32efaa7f5
坐标方向:东南
距离:80米
电话:
======================
------------附近情况--------------
地址:广州市番禺区
名称:汇庭雅苑一三五座
类型:房地产
标志:房地产;写字楼
id:31f9101bd7d01cb926e0a0da
坐标方向:南
距离:70米
电话:
======================
代码如下:
package com.ym.manage.mobile.controller;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ym.core.tools.CommUtil;
@Controller
public class MobilePayController {
@RequestMapping(value="api/getNearInfo.htm",method=RequestMethod.GET)
public void near_info(String address,HttpServletRequest request ,HttpServletResponse response) throws Exception{
PrintWriter out = response.getWriter();
System.out.println("address:"+address);
address = CommUtil.decode(address);//转码
//request.setCharacterEncoding("utf-8");
if("".equals(address)||address==null){
address = "德信路229号";
}
//response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
Map<String ,Double> map = LngAndLatUtil.getLngAndLat(address);
Map<String,Object> info_map = LngAndLatUtil.getInfo(map.get("lat"), map.get("lng"));
System.out.println("经度info:"+info_map.get("echo_lng")+"纬度:"+info_map.get("echo_lat"));
System.out.println("你所在的位置全称:"+info_map.get("full_addr")+info_map.get("local"));
//打印周围
System.out.println("周围地点:");
out.print("周围地点:");
List<Map<String,Object>> list = (List<Map<String,Object>>) info_map.get("pois");
for(Map<String,Object> obj:list){
System.out.println("------------附近情况--------------");
out.print("------------附近情况--------------<br/>");
Map<String,Object> map_map = (Map<String, Object>) obj;
String addr = (String) map_map.get("addr");
String direction = (String) map_map.get("direction2");
String distance = (String) map_map.get("distance2");
String tel = (String) map_map.get("tel");
String name = (String) map_map.get("name");
String poiType = (String) map_map.get("poiType");
String tag = (String) map_map.get("tag");
String uid = (String) map_map.get("uid");
System.out.println("地址:"+addr);
out.print("地址:"+addr+"<br/>");
System.out.println("名称:"+name);
out.print("名称:"+name+"<br/>");
System.out.println("类型:"+poiType);
out.print("类型:"+poiType+"<br/>");
System.out.println("标志:"+tag);
out.print("标志:"+tag+"<br/>");
System.out.println("id:"+uid);
out.print("id:"+uid+"<br/>");
System.out.println("坐标方向:"+direction);
out.print("坐标方向:"+direction+"<br/>");
System.out.println("距离:"+distance);
out.print("距离:"+distance+"米<br/>");
System.out.println("电话:"+tel);
out.print("电话:"+tel+"<br/>");
System.out.println("===========================");
out.print("======================<br/>");//JSON.toJSON(map_map);
//out.print(JSON.toJSON(map_map));
}
out.flush();
out.close();
}
}
下面是工具类:
package com.ym.manage.mobile.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @ClassName LngAndLatUtil
* @Description 经纬度工具类
* @author frqing qing7454@gmail.com
* @date 2016年6月16日
* @version 1.01
*/
public class LngAndLatUtil {
/**获取地址的经纬度*/
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=KhEIdKf0aDuqADMSW8oQPliC";
String json = loadJSON(url);
JSONObject obj = JSONObject.parseObject(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("未找到相匹配的经纬度!");
}
return map;
}
/**获取周围信息*/
public static Map<String,Object> getInfo(double lat,double lng){
String url = "http://api.map.baidu.com/geocoder/v2/?ak=你的ak码&location="+lat+","+lng+"&output=json&pois=1";
String info = loadJSON(url);
JSONObject obj = JSONObject.parseObject(info);
Map<String,Object> info_map = new HashMap<String,Object>();
if("0".equals(obj.get("status").toString())){
JSONObject result = obj.getJSONObject("result");
double echo_lng = result.getJSONObject("location").getDouble("lng");//lat-纬度,lng-经度
info_map.put("echo_lng", echo_lng);
double echo_lat = result.getJSONObject("location").getDouble("lat");
info_map.put("echo_lat", echo_lat);
String full_addr = result.getString("formatted_address");//dizhi
info_map.put("full_addr", full_addr);
String local = result.getString("business");//位置
info_map.put("local", local);
JSONObject addressComponent = result.getJSONObject("addressComponent");
//info_map.put("country_caode", street_number);
String code = addressComponent.getString("adcode");//地理编码
info_map.put("code", code);
String city = addressComponent.getString("city");//城市
info_map.put("city", city);
String country = addressComponent.getString("country");//国家
info_map.put("country", country);
String direction = addressComponent.getString("direction");//方向
info_map.put("direction", direction);
String distance = addressComponent.getString("distance");//距离
info_map.put("distance", distance);
String district = addressComponent.getString("district");//区
info_map.put("district", district);
String province = addressComponent.getString("province");//省
info_map.put("province", province);
String street = addressComponent.getString("street");//街道
info_map.put("street", street);
String street_number = addressComponent.getString("street_number");//门牌号
info_map.put("street_number", street_number);
String country_code = addressComponent.getString("country_code");//国家代号
info_map.put("country_caode", country_code);
JSONArray pois = result.getJSONArray("pois");//附近的地点描述
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
for(Object o:pois){
Map<String,Object> map = new HashMap<String,Object>();
JSONObject jo = (JSONObject) o;
String addr = (String) jo.get("addr");
map.put("addr", addr);
String cp = (String) jo.get("cp");
map.put("cp", cp);
String direction2 = (String) jo.get("direction");
map.put("direction2", direction2);
String distance2 = (String) jo.get("distance");
map.put("distance2", distance2);
String name = (String) jo.get("name");
map.put("name", name);
String poiType = (String) jo.get("poiType");
map.put("poiType", poiType);
//String point = (String) jo.get("point");
JSONObject object = jo.getJSONObject("point");
map.put("point", object);
String tag = (String) jo.get("tag");
map.put("tag", tag);
String tel = (String) jo.get("tel");
map.put("tel", tel);
String uid = (String) jo.get("uid");
map.put("uid", uid);
String zip = (String) jo.get("zip");
map.put("zip", zip);
list.add(map);
}
info_map.put("pois", list);
}
return info_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(),"utf-8"));
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 main(String[] args) {
Map<String ,Double> map = LngAndLatUtil.getLngAndLat("雅荷居");
Map<String,Object> info_map = LngAndLatUtil.getInfo(map.get("lat"), map.get("lng"));
System.out.println("经度info:"+info_map.get("echo_lng")+"纬度:"+info_map.get("echo_lat"));
System.out.println("你所在的位置全称:"+info_map.get("full_addr")+info_map.get("local"));
//打印周围
System.out.println("周围地点:");
List<Map<String,Object>> list = (List<Map<String,Object>>) info_map.get("pois");
for(Map<String,Object> obj:list){
System.out.println("------------附近情况--------------");
Map<String,Object> map_map = (Map<String, Object>) obj;
String addr = (String) map_map.get("addr");
String direction = (String) map_map.get("direction2");
String distance = (String) map_map.get("distance2");
String tel = (String) map_map.get("tel");
String name = (String) map_map.get("name");
String poiType = (String) map_map.get("poiType");
String tag = (String) map_map.get("tag");
String uid = (String) map_map.get("uid");
System.out.println("地址:"+addr);
System.out.println("名称:"+name);
System.out.println("类型:"+poiType);
System.out.println("标志:"+tag);
System.out.println("id:"+uid);
System.out.println("坐标方向:"+direction);
System.out.println("距离:"+distance);
System.out.println("电话:"+tel);
System.out.println("===========================");
}
}
}
返回的数据通过自己的封装就可以显示如下:
周围地点:------------附近情况--------------
地址:番禺区市桥南汇景大道
名称:汇庭雅苑
类型:房地产
标志:房地产
id:fa01e9372af45049764ff19c
坐标方向:内
距离:0米
电话:
======================
------------附近情况--------------
地址:汇景大道47
名称:百果园
类型:购物
标志:购物;超市
id:c66b9cf1356f3af32efaa7f5
坐标方向:东南
距离:80米
电话:
======================
------------附近情况--------------
地址:广州市番禺区
名称:汇庭雅苑一三五座
类型:房地产
标志:房地产;写字楼
id:31f9101bd7d01cb926e0a0da
坐标方向:南
距离:70米
电话:
======================
代码如下:
package com.ym.manage.mobile.controller;
import java.io.PrintWriter;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.ym.core.tools.CommUtil;
@Controller
public class MobilePayController {
@RequestMapping(value="api/getNearInfo.htm",method=RequestMethod.GET)
public void near_info(String address,HttpServletRequest request ,HttpServletResponse response) throws Exception{
PrintWriter out = response.getWriter();
System.out.println("address:"+address);
address = CommUtil.decode(address);//转码
//request.setCharacterEncoding("utf-8");
if("".equals(address)||address==null){
address = "德信路229号";
}
//response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=utf-8");
Map<String ,Double> map = LngAndLatUtil.getLngAndLat(address);
Map<String,Object> info_map = LngAndLatUtil.getInfo(map.get("lat"), map.get("lng"));
System.out.println("经度info:"+info_map.get("echo_lng")+"纬度:"+info_map.get("echo_lat"));
System.out.println("你所在的位置全称:"+info_map.get("full_addr")+info_map.get("local"));
//打印周围
System.out.println("周围地点:");
out.print("周围地点:");
List<Map<String,Object>> list = (List<Map<String,Object>>) info_map.get("pois");
for(Map<String,Object> obj:list){
System.out.println("------------附近情况--------------");
out.print("------------附近情况--------------<br/>");
Map<String,Object> map_map = (Map<String, Object>) obj;
String addr = (String) map_map.get("addr");
String direction = (String) map_map.get("direction2");
String distance = (String) map_map.get("distance2");
String tel = (String) map_map.get("tel");
String name = (String) map_map.get("name");
String poiType = (String) map_map.get("poiType");
String tag = (String) map_map.get("tag");
String uid = (String) map_map.get("uid");
System.out.println("地址:"+addr);
out.print("地址:"+addr+"<br/>");
System.out.println("名称:"+name);
out.print("名称:"+name+"<br/>");
System.out.println("类型:"+poiType);
out.print("类型:"+poiType+"<br/>");
System.out.println("标志:"+tag);
out.print("标志:"+tag+"<br/>");
System.out.println("id:"+uid);
out.print("id:"+uid+"<br/>");
System.out.println("坐标方向:"+direction);
out.print("坐标方向:"+direction+"<br/>");
System.out.println("距离:"+distance);
out.print("距离:"+distance+"米<br/>");
System.out.println("电话:"+tel);
out.print("电话:"+tel+"<br/>");
System.out.println("===========================");
out.print("======================<br/>");//JSON.toJSON(map_map);
//out.print(JSON.toJSON(map_map));
}
out.flush();
out.close();
}
}
下面是工具类:
package com.ym.manage.mobile.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
/**
* @ClassName LngAndLatUtil
* @Description 经纬度工具类
* @author frqing qing7454@gmail.com
* @date 2016年6月16日
* @version 1.01
*/
public class LngAndLatUtil {
/**获取地址的经纬度*/
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=KhEIdKf0aDuqADMSW8oQPliC";
String json = loadJSON(url);
JSONObject obj = JSONObject.parseObject(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("未找到相匹配的经纬度!");
}
return map;
}
/**获取周围信息*/
public static Map<String,Object> getInfo(double lat,double lng){
String url = "http://api.map.baidu.com/geocoder/v2/?ak=你的ak码&location="+lat+","+lng+"&output=json&pois=1";
String info = loadJSON(url);
JSONObject obj = JSONObject.parseObject(info);
Map<String,Object> info_map = new HashMap<String,Object>();
if("0".equals(obj.get("status").toString())){
JSONObject result = obj.getJSONObject("result");
double echo_lng = result.getJSONObject("location").getDouble("lng");//lat-纬度,lng-经度
info_map.put("echo_lng", echo_lng);
double echo_lat = result.getJSONObject("location").getDouble("lat");
info_map.put("echo_lat", echo_lat);
String full_addr = result.getString("formatted_address");//dizhi
info_map.put("full_addr", full_addr);
String local = result.getString("business");//位置
info_map.put("local", local);
JSONObject addressComponent = result.getJSONObject("addressComponent");
//info_map.put("country_caode", street_number);
String code = addressComponent.getString("adcode");//地理编码
info_map.put("code", code);
String city = addressComponent.getString("city");//城市
info_map.put("city", city);
String country = addressComponent.getString("country");//国家
info_map.put("country", country);
String direction = addressComponent.getString("direction");//方向
info_map.put("direction", direction);
String distance = addressComponent.getString("distance");//距离
info_map.put("distance", distance);
String district = addressComponent.getString("district");//区
info_map.put("district", district);
String province = addressComponent.getString("province");//省
info_map.put("province", province);
String street = addressComponent.getString("street");//街道
info_map.put("street", street);
String street_number = addressComponent.getString("street_number");//门牌号
info_map.put("street_number", street_number);
String country_code = addressComponent.getString("country_code");//国家代号
info_map.put("country_caode", country_code);
JSONArray pois = result.getJSONArray("pois");//附近的地点描述
List<Map<String,Object>> list = new ArrayList<Map<String,Object>>();
for(Object o:pois){
Map<String,Object> map = new HashMap<String,Object>();
JSONObject jo = (JSONObject) o;
String addr = (String) jo.get("addr");
map.put("addr", addr);
String cp = (String) jo.get("cp");
map.put("cp", cp);
String direction2 = (String) jo.get("direction");
map.put("direction2", direction2);
String distance2 = (String) jo.get("distance");
map.put("distance2", distance2);
String name = (String) jo.get("name");
map.put("name", name);
String poiType = (String) jo.get("poiType");
map.put("poiType", poiType);
//String point = (String) jo.get("point");
JSONObject object = jo.getJSONObject("point");
map.put("point", object);
String tag = (String) jo.get("tag");
map.put("tag", tag);
String tel = (String) jo.get("tel");
map.put("tel", tel);
String uid = (String) jo.get("uid");
map.put("uid", uid);
String zip = (String) jo.get("zip");
map.put("zip", zip);
list.add(map);
}
info_map.put("pois", list);
}
return info_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(),"utf-8"));
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 main(String[] args) {
Map<String ,Double> map = LngAndLatUtil.getLngAndLat("雅荷居");
Map<String,Object> info_map = LngAndLatUtil.getInfo(map.get("lat"), map.get("lng"));
System.out.println("经度info:"+info_map.get("echo_lng")+"纬度:"+info_map.get("echo_lat"));
System.out.println("你所在的位置全称:"+info_map.get("full_addr")+info_map.get("local"));
//打印周围
System.out.println("周围地点:");
List<Map<String,Object>> list = (List<Map<String,Object>>) info_map.get("pois");
for(Map<String,Object> obj:list){
System.out.println("------------附近情况--------------");
Map<String,Object> map_map = (Map<String, Object>) obj;
String addr = (String) map_map.get("addr");
String direction = (String) map_map.get("direction2");
String distance = (String) map_map.get("distance2");
String tel = (String) map_map.get("tel");
String name = (String) map_map.get("name");
String poiType = (String) map_map.get("poiType");
String tag = (String) map_map.get("tag");
String uid = (String) map_map.get("uid");
System.out.println("地址:"+addr);
System.out.println("名称:"+name);
System.out.println("类型:"+poiType);
System.out.println("标志:"+tag);
System.out.println("id:"+uid);
System.out.println("坐标方向:"+direction);
System.out.println("距离:"+distance);
System.out.println("电话:"+tel);
System.out.println("===========================");
}
}
}
相关文章推荐
- HDU 2243 (AC自动机 矩阵快速幂)
- 软件设计的三原则:模块化、抽象和信息隐藏
- SQL 语句的经验
- web.xml总结整理
- 天气预报及城市代码
- MySQL 基于存储过程 实现数据统计按日、周、月份统计模板
- Java多态性理解
- FreeMarker(一)
- C++之运行时类型信息(RTTI)
- 剑指offer——矩阵覆盖
- appium处理app与web页面的转换
- [Android] AsyncTask使用实例---加载网络图片
- java小程序从数据库中(表)中读取数据然后创建文件夹生成txt文件
- 网络信息安全学习平台---脚本关第15题
- 最长公共子序列(易理解)
- Oracle数据库中对null值的排序及mull与空字符串的区别
- Java合并数组的两个子有序段
- 关于学习与休息
- php使用mysql和mysqli连接查询数据
- 利用 BASE64Encoder 对字符串进行加密 BASE64Decoder进行解密