续上
/**
* 周边根据关键字搜索
* google周边https://maps.googleapis.com/maps/api/place/search/xml?location={$latitude},{$longitude}&radius=3000&sensor=false&key=AIzaSyAoKznDSiW_PzkiRapITcwT-UzwbeMkN1I&language=zh-CN&keyword=餐馆
* @author 熊诗言
*
*/
public class BaiduZhoubianSearchService {
public static final String url = "http://api.map.baidu.com/telematics/v3/local?location=LONGITUDE,LATITUDE&keyWord=KEYWORD&output=json&ak=4Dlcr5PebDTnRuIsv6kChkA5";
@SuppressWarnings("unused")
private static String httpRequest(String requestUrl) {
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
httpUrlConn.setDoOutput(false);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
@SuppressWarnings({ "static-access", "unchecked" })
public static String searchZhoubian(String latitude,String longitude,String keyWord){
String jsonString = null;
try {
String requestUrl = url.replaceAll("LONGITUDE", longitude)
.replaceAll("LATITUDE", latitude)
.replaceAll("KEYWORD", URLEncoder.encode(keyWord,"utf-8"));
//System.out.println(requestUrl);
jsonString = httpRequest(requestUrl);
//System.out.println(jsonString);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
JSONObject object = JSONObject.fromObject(jsonString);
/**
* java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.xsy.weixin.domain.zhoubian.Place
*/
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("pointList", Place.class);
classMap.put("link", Link.class);
ZhoubianResult zhoubianResult = (ZhoubianResult) JSONObject.toBean(object,ZhoubianResult.class,classMap);
AdditionalInformation add = null;
StringBuffer buffer = new StringBuffer("我为您找到如下"+keyWord+"\n");
List<Place> places = zhoubianResult.getPointList();
int num = 0;
for (Place place:places) {
if(num++==2){
break;
}
buffer.append("[").append(place.getName()).append("]\n[地址:").append(place.getAddress()).append("][距离:").append(place.getDistance()).append("]\n");
add = place.getAdditionalInformation();
if(null!=add){
buffer.append("[价格:").append(add.getPrice()).append("][电话:").append(add.getTelephone()).append("]\n\n");
//加上这一段就收不到信息。字数限制
///*
List<Link> links = add.getLink();//网络链接
if(null!=links){
for (int j = 0; j < links.size(); j++) {
String linkName = links.get(j).getName();
String linkUrl = links.get(j).getUrl();
//buffer.append("<a href=""+linkUrl+"">"+linkName+"</a>\n");
buffer.append("<a href=\""+linkUrl+"\">"+linkName+"</a>\n");
}
buffer.append("\n\n");
}else {
buffer.append("\n");
}//*/
}
}
return buffer.toString();
}
@Test
public void testSearch() throws UnsupportedEncodingException{
String string = searchZhoubian("41","122","酒店");
System.out.println(string.getBytes("utf-8").length);
}
}
public class ZhoubianResult {
private String status;
private int total;
private int count;
private List<Place> pointList;
。。。。
}
public class Place {
private String name;
private String cityName;
private Location location;
private String address;
private int distance;
private String district;
private AdditionalInformation additionalInformation;
private String type;
。。。。
}
public class Location {
private double lng;
private double lat;
。。。。
}
public class AdditionalInformation {
private String name;
private String telephone;
private String address;
private String price;
private String tag;
private List<Link> link;
。。。。。
}
public class Link {
private String name;
private String url;
。。。。
}
/**
* 周边根据关键字搜索
* google周边https://maps.googleapis.com/maps/api/place/search/xml?location={$latitude},{$longitude}&radius=3000&sensor=false&key=AIzaSyAoKznDSiW_PzkiRapITcwT-UzwbeMkN1I&language=zh-CN&keyword=餐馆
* @author 熊诗言
*
*/
public class BaiduZhoubianSearchService {
public static final String url = "http://api.map.baidu.com/telematics/v3/local?location=LONGITUDE,LATITUDE&keyWord=KEYWORD&output=json&ak=4Dlcr5PebDTnRuIsv6kChkA5";
@SuppressWarnings("unused")
private static String httpRequest(String requestUrl) {
StringBuffer buffer = new StringBuffer();
try {
URL url = new URL(requestUrl);
HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
httpUrlConn.setDoOutput(false);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestMethod("GET");
httpUrlConn.connect();
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return buffer.toString();
}
@SuppressWarnings({ "static-access", "unchecked" })
public static String searchZhoubian(String latitude,String longitude,String keyWord){
String jsonString = null;
try {
String requestUrl = url.replaceAll("LONGITUDE", longitude)
.replaceAll("LATITUDE", latitude)
.replaceAll("KEYWORD", URLEncoder.encode(keyWord,"utf-8"));
//System.out.println(requestUrl);
jsonString = httpRequest(requestUrl);
//System.out.println(jsonString);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
JSONObject object = JSONObject.fromObject(jsonString);
/**
* java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.xsy.weixin.domain.zhoubian.Place
*/
Map<String, Class> classMap = new HashMap<String, Class>();
classMap.put("pointList", Place.class);
classMap.put("link", Link.class);
ZhoubianResult zhoubianResult = (ZhoubianResult) JSONObject.toBean(object,ZhoubianResult.class,classMap);
AdditionalInformation add = null;
StringBuffer buffer = new StringBuffer("我为您找到如下"+keyWord+"\n");
List<Place> places = zhoubianResult.getPointList();
int num = 0;
for (Place place:places) {
if(num++==2){
break;
}
buffer.append("[").append(place.getName()).append("]\n[地址:").append(place.getAddress()).append("][距离:").append(place.getDistance()).append("]\n");
add = place.getAdditionalInformation();
if(null!=add){
buffer.append("[价格:").append(add.getPrice()).append("][电话:").append(add.getTelephone()).append("]\n\n");
//加上这一段就收不到信息。字数限制
///*
List<Link> links = add.getLink();//网络链接
if(null!=links){
for (int j = 0; j < links.size(); j++) {
String linkName = links.get(j).getName();
String linkUrl = links.get(j).getUrl();
//buffer.append("<a href=""+linkUrl+"">"+linkName+"</a>\n");
buffer.append("<a href=\""+linkUrl+"\">"+linkName+"</a>\n");
}
buffer.append("\n\n");
}else {
buffer.append("\n");
}//*/
}
}
return buffer.toString();
}
@Test
public void testSearch() throws UnsupportedEncodingException{
String string = searchZhoubian("41","122","酒店");
System.out.println(string.getBytes("utf-8").length);
}
}
public class ZhoubianResult {
private String status;
private int total;
private int count;
private List<Place> pointList;
。。。。
}
public class Place {
private String name;
private String cityName;
private Location location;
private String address;
private int distance;
private String district;
private AdditionalInformation additionalInformation;
private String type;
。。。。
}
public class Location {
private double lng;
private double lat;
。。。。
}
public class AdditionalInformation {
private String name;
private String telephone;
private String address;
private String price;
private String tag;
private List<Link> link;
。。。。。
}
public class Link {
private String name;
private String url;
。。。。
}