2017-12-27 13 views
1

助けてください 私は緯度、経度をarrayList<String>に保存しましたが、新しいLatLngクラスに追加することはできません。新しいLatLngクラスにArraylist Lat Long値を追加する方法

jsonでLat、Long値を取得し、それを(String)ArrayList<String>に追加する必要があります。

私はすべてのArrayList Lat、longをlatlngクラスに追加したいと思います。ここでは、ポリラインを使って見ることができます。

しかし、私は1つの緯度と経度を得ることができ、それは私のGoogleマップに表示されます。しかし、私は すべてArrayList値を取得することはできません。 何度も試してみました。 LatとLongで距離を測定する方法 以下は私のコードです。

ArrayList<String> arr; 

if(b!=null){ 
      arr = (ArrayList<String>)b.getStringArrayList("array_list"); 
      // System.out.println(arr); 
     } 
    String s=arr.toString(); 
    System.out.println(s.substring(1, s.length()-1)); 

    String ss=s.substring(1,s.length()-1); 
    System.out.println(ss); 
    d=ss.split(","); 
    for (int i=0;i<d.length;i++){ 
     if(i%2==0){ 
      dd=d[i]; 
      System.out.println(dd +"all even"); 
     }else{ 
      nd=d[i]; 

      System.out.println(nd +"all odd"); 
     } 


    } 

    List<LatLng> point = new ArrayList<LatLng>(); 
    double pointY[]={Double.parseDouble(nd)}; 
    double pointX[]={Double.parseDouble(dd)}; 
    for (int i = 0 ; i < pointX.length; i++){ 

     point.add(new LatLng(pointX[i],pointY[i])); 
    } 
+1

私はなぜあなたはpojoにjsonを解析するためにjsonフレームワークを使用しないのですか?私はjacksonと呼ばれるフレームワークを提案します –

+0

親愛なる、私はすべてのjsonを得ることができ、私はarraylistに&putExtraを使用してデータを渡すことができます。しかし、私の問題は私のGoogleマップにarraylistの価値を追加することはできません。私は1つのマーカーしか得ることができません。しかし、私は5ラット、長い値を持っています。 –

+0

この変な文字列操作を行う代わりに、モーダルクラスのカスタムarraylistを作成し、コンストラクタまたはgetter/setterを使用してリストにデータを追加します。あなたのリストをループして、あなたのデータを取得した後 –

答えて

2

あなたの先のとがった

、これを試してみてください、pointXは最後の項目で初期化されました。私は(申し訳ありません、あなたのコーディングスタイルが恐ろしいです)読めない何か、なぜあなたがやろうとしているとあなたのコードを確認していないすべての値

ArrayList<String> arr; 
    Bundle b = getIntent().getExtras(); 
if(b!=null){ 
      arr = (ArrayList<String>)b.getStringArrayList("array_list"); 
      // System.out.println(arr); 
     } 
    String s=arr.toString(); 
    System.out.println(s.substring(1, s.length()-1)); 

String ss=s.substring(1,s.length()-1); 
System.out.println(ss); 


d=ss.split(","); 
List<Double> pointY = new ArrayList<>(); 
    List<Double> pointX = new ArrayList<>(); 

for (int i=0;i<d.length;i++){ 
    if(i%2==0){ 
     dd=d[i]; 
     pointX.add(Double.parseDouble(dd)); 
     System.out.println(dd +"all even"); 
    }else{ 
     nd=d[i]; 
     pointY.add(Double.parseDouble(nd)); 
     System.out.println(nd +"all odd"); 
    } 


} 

List<LatLng> point = new ArrayList<LatLng>(); 
for (int i = 0 ; i < pointX.size(); i++){ 

    point.add(new LatLng(pointX.get(i),pointY.get(i))); 
} 
+0

私にお試しさせてください。 –

+0

初期化するのがここで許可されていません。pointX [x ++] = {Double.parseDouble(dd)}; –

+0

@HarishKumarは更新された答えを – Raghavendra

0

を埋めるためにループのためのものを入れてください。しかし、私はこれをどうやってやるかについてのスニペットを示すことができます。

public static void main(String args[]) { 
    // some example data 
    String coord1lat = "15.235235"; 
    String coord1lng = "31.776776"; 
    String coord2lat = "34.334346"; 
    String coord2lng = "31.776776"; 
    String[] coordinatesStringList = {coord1lat, coord1lng, coord2lat, coord2lng}; 

    List<LatLng> latLngList = new ArrayList<LatLng>(); 
    for(int i=0; i<coordinatesStringList.length; i+=2){ 
     LatLng pont = new LatLng(Double.parseDouble(coordinatesStringList[i]), Double.parseDouble(coordinatesStringList[i+1])); 
     latLngList.add(point); 
    } 
} 

再び、緯度と経度を1つの配列に格納することを強くお勧めします。私はあなたの事を知らないが、少なくともカップルにそれらを保管しようとする。 Like String coord1 = "15.23235,16.232342"

+0

親愛なる、私はarraylist = 28.6613494,77.1483808,28.6613494,77.1483808,28.550819、77.255524,28.6613486,77.1483728,28.6613486,77.1483728,28.6613486,77.1483728のようなものを持っています。どのように私はそれを追加することができます。私はそれを分割しない場合。 –

+0

私はあなたが何を言おうとしているのか分かりません。配列の場合、分割する必要はありません。すべての座標がString(配列ではない)にある場合、分割したとします。同様に '文字列座標=" 28.6613494,77.1483808,28.6613494,77.1483808,28.550819,77.255524,28.6613486,77.1483728,28.6613486,77.1483728,28.6613486,77.1483728 " しかし、それはそうではありませんか? –

+0

oh。私はあなたの論理を理解しました。ありがとうございました。 –

関連する問題