如何从android中的两个数组列表中创建地理编码

时间:2011-12-28 17:25:44

标签: java android google-maps geocode

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

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

2 个答案:

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


    }