package org.czzz.demo;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.http.NameValuePair;
import org.apache.http.client.utils.URLEncodedUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.content.Context;
import android.util.Log;
import com.weibo.net.Weibo;
public class PlacesUtils {
/**
* 解析新浪位置返回的json,获取位置列表
* @param jsonStr
* @return
* @throws JSONException
*/
public static ArrayList<Map<String,String>> parsePlacesNearby(String jsonStr) throws JSONException{
JSONObject json = new JSONObject(jsonStr);
JSONArray places = json.getJSONArray("pois");
ArrayList<Map<String,String>> list = new ArrayList<Map<String,String>>();
for(int i=0; i<places.length(); i++){
// parse each place in the array
JSONObject j = new JSONObject(String.valueOf(places.get(i)));
HashMap<String,String> map = new HashMap<String,String>();
map.put("name", j.getString("title"));
map.put("address", j.getString("address"));
map.put("lat", j.getString("lat"));
map.put("lon", j.getString("lon"));
map.put("city", j.getString("city"));
map.put("icon", j.getString("icon"));
list.add(map);
}
return list;
}
/**
* 新浪返回的位置json是unicode码,将其转化为普通字符串
* @param str
* @return
*/
public static String unicodeToString(String str) {
Pattern pattern = Pattern.compile("(\\\\u(\\p{XDigit}{4}))");
Matcher matcher = pattern.matcher(str);
char ch;
while(matcher.find()){
ch = (char) Integer.parseInt(matcher.group(2), 16);
str = str.replace(matcher.group(1), ch + "");
}
return str;
}
/**
* 获取附近地点
* @param context
* @param params
* @param placesListener
*/
public static void getPlacesNearby(Context context, List<NameValuePair> params,
HttpListener placesListener) {
String url = Weibo.SERVER + "place/nearby/pois.json" + "?source=" + Weibo.getAppKey() + "&";
String paramString = URLEncodedUtils.format(params, "utf-8");
url += paramString;
Log.d("DEBUG", "url: " + url);
new HttpDownloadAsyncTask(placesListener).execute(url);
}
}