2011-12-28 44 views
1

嘿傢伙我有一個被解析JSON文件後,創建了四個整數數組列表:如何使兩個數組列表地址解析Android中

  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

*「我的問題是應用程序關閉(...)」*。第一步是檢查LogCat中的實際錯誤,並從那裏開始。既然你已經在這裏發佈了一個問題,你還可以添加錯誤的堆棧跟蹤。此外,你要投入緯度/長度的任何特定原因?這可能是精確度的巨大損失。 – 2011-12-28 18:44:27

回答

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


    }