您的位置:首页 > 其它

关于百度地图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("===========================");

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: