как сделать геокоды из двух списков массивов в Android - PullRequest
1 голос
/ 28 декабря 2011

Эй, ребята, у меня есть четыре списка целочисленных массивов, которые были созданы после разбора файла 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 ]

1 голос
/ 28 декабря 2011
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"); 
      }
0 голосов
/ 31 декабря 2011

Я нашел проблему, я перепутал имена переменных, глупая ошибка с моей стороны. Для своего решения я создал 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);


    } 
...