Hey Guys我有四个整数数组列表,它们是在解析json文件后创建的:
JSONObject o = new JSONObject(s);
JSONObject c = new JSONObject(s);
JSONArray a = o.getJSONArray("posts");
o = a.getJSONObject(0);
c = a.getJSONObject(1);
lat.add((int) (o.getDouble("Latitude")* 1E6));
lng.add((int) (o.getDouble("lontitude")* 1E6));
lat1.add((int) (c.getDouble("Latitude")* 1E6));
lon1.add((int) (c.getDouble("lontitude")* 1E6));
从长远来看,我想循环遍历这些列表以获取所有经度和纬度值,但是现在我得到前两个值。我的问题是应用程序部队关闭,我认为在创建地理编码时它们出了问题:
GeoPoint point = new GeoPoint( (int) lat.get(1), (int) lng.get(1));
OverlayItem overlayitem = new OverlayItem(point, "", "");
GeoPoint point1 = new GeoPoint((int) lat1.get(1), (int) lon1.get(1));
OverlayItem overlayitem1 = new OverlayItem(point1, "", "");
如果有人能够知道我做错了什么,那将是一个很大的帮助,谢谢
答案 0 :(得分:1)
double latiude[] = null;
double longitude[] = null;
JSONObject json=JSONFunction.getJSONfromURL(Url);
try{
JSONArray JArray = json.getJSONArray("results");
latitude = new double[jArray.length/size()];
longitude = new double[jArray.length/size()];
Log.v(TAG, "getting results");
for(int i=0;i<JArray.length();i++)
{
JSONObject e = JArray.getJSONObject(i);
JSONObject location1=e.getJSONObject("geometry").getJSONObject("location");
latitude[i]=location1.getDouble("lat");
longitude[i]=location1.getDouble("lng");
}
答案 1 :(得分:0)
我发现了问题,我混淆了我的变量名,这是我的愚蠢错误。对于我的解决方案,我创建了3个向量,一个地理输出向量和另外两个向量。一个是纬度 另一个是为了lontitudes。
o = new JSONObject(s);
JSONArray a = o.getJSONArray("posts");
int arrSize = a.length();
points = new Vector <GeoPoint>();
lat = new Vector<Integer>(a.length());
lng = new Vector<Integer>(a.length());
for (int i = 0; i < a.length(); i++) {
o = a.getJSONObject(i);
lat.add((int) (o.getDouble("Latitude")* 1E6));
lng.add((int) (o.getDouble("lontitude")* 1E6));
points.add(new GeoPoint( (int) lat.get(i), (int) lng.get(i)));
overlayitem = new OverlayItem((GeoPoint) points.get(i), "", "");
itemizedOverlay.addOverlay(overlayitem);
mapOverlays.add(itemizedOverlay);
MapController mapController = mapView.getController();
mapController.animateTo((GeoPoint) points.get(i));
mapController.setZoom(6);
}