局部程序:
private void findByInfo(int i) { try {
String strURI = "http://192.168.0.2:8080/LocationServer/LocationSevlet";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(strURI);
ArrayList<BasicNameValuePair> nvps = new ArrayList<BasicNameValuePair>();// 实例化:nvps是以这种形式携带参数 nvps.add(new BasicNameValuePair("longitude", String.valueOf(gp
.getLongitudeE6() / 1E6)));
nvps.add(new BasicNameValuePair("latitude", String.valueOf(gp
.getLatitudeE6() / 1E6)));
nvps.add(new BasicNameValuePair("type", String.valueOf(i))); UrlEncodedFormEntity entityIn;
entityIn = new UrlEncodedFormEntity(nvps, "utf-8"); httppost.setEntity(entityIn); HttpResponse response = httpclient.execute(httppost);
HttpEntity entityBack = response.getEntity();// 从服务器放回的实体entityBack if (entityBack != null) {
BufferedReader br = new BufferedReader(new InputStreamReader(
entityBack.getContent(), "utf-8"));// 读取entityBack里的内容
final StringBuffer sb = new StringBuffer();
String line;
while ((line = br.readLine()) != null) {
sb.append(line);
} class SitesOverlay extends ItemizedOverlay<OverlayItem> {
private List<OverlayItem> items = new ArrayList<OverlayItem>();// items是OverlayItem标志集合对象
private Drawable er = null;// er是一个标志使用的图标 public SitesOverlay(Drawable er) {// 是构造方法,用来初始化成员变量item和er的
super(er);
this.er = er; try {
JSONObject jsonobject = new JSONObject(sb
.toString());
JSONArray jsonResponse = jsonobject
.getJSONArray("location:");// 大对象 if (jsonResponse != null) {
Drawable reder = getResources()
.getDrawable(R.drawable.reder); List<OverlayItem> items = new ArrayList<OverlayItem>(); for (int i = 0; i < jsonResponse.length(); i++) {
JSONObject rec = jsonResponse
.getJSONObject(i);
double longitude = rec
.getDouble("longitude");
double latitude = rec.getDouble("latitude");
GeoPoint gp = new GeoPoint(
(int) (latitude * 1E6),
(int) (longitude * 1E6));
items.add(new OverlayItem(gp, rec
.getString("name"), rec
.getString("des")));
map.getOverlays().add(
new SitesOverlay(reder));
}
} } catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
populate();
} @Override
protected OverlayItem createItem(int i) {// 此方法是通过索引创建一个OverlayItem对象 return (items.get(i));
} public void draw(Canvas canvas, MapView mapView,
boolean shadow) {// 此方法是绘制地图上图层的方法
super.draw(canvas, mapView, shadow);
boundCenterBottom(er);
} @Override
protected boolean onTap(int i) {// 此方法是触摸地图上的标志时出发的方法
Toast.makeText(TrafficQueryActivity.this,
items.get(i).getSnippet(), Toast.LENGTH_LONG)
.show();
return (true);
} @Override
public int size() {// 此方法是返回标志点的个数 return items.size();
} } }
} catch (UnsupportedEncodingException e) { e.printStackTrace();
} catch (ClientProtocolException e) { e.printStackTrace();
} catch (IOException e) { e.printStackTrace();
}
}部分日志:
04-04 16:17:27.629: DEBUG/LocationMasfClient(53): getAddressFromProtoBuf(): Ignore feature 20,天安门
04-04 16:17:27.670: VERBOSE/searched location(511): 天安门
04-04 16:17:27.680: VERBOSE/lat&lng(511): 39908711,116397506
04-04 16:17:27.827: INFO/global(511): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
不知道为什么日志到这里就结束了 ?从服务器返回的json格式数据往google map上标记问题能不能给个具体的例子!