1

嘿伙计们,我有四个整数数组列表,它们是在解析 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, "", "");

如果有人能知道我做错了什么,那将是一个很大的帮助,谢谢

4

2 回答 2

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"); 
      }
于 2011-12-28T17:35:58.960 回答
0

我发现了问题,我混淆了我的变量名,这是我的愚蠢错误。对于我的解决方案,我创建了 3 个向量,一个地理点向量和两个其他向量。一个用于纬度,另一个用于经度。

        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);


    } 
于 2011-12-31T12:19:32.247 回答