0

2 つの Double 配列があります。

double[] LatArr = {28.5700,28.4700,28.29};
double[] LonArr = {77.3200,77.0300,77.62};

そして、私のループ構造は次のようになります。

for(int i=0;i<count;i++)
            {
                for(int j=0;j<count;j++)
                {
                    Double lat1;
                    Double lon1;
                    Double lat2;
                    Double lon2;
                    lat1 = LatArr[i];
                    lon1 = LonArr[j];
                    //System.out.println(LatLon[i][j]);
                    /*System.out.println("<< BREAK >>");
                    System.out.println(lat1);
                    System.out.println(lon1);
                    */
                    lat2=lat1;
                    //lat1 = null;
                    lon2=lon1;
                    //lon1 = null;
                    i++;

                    if(lat1!=null){
                    GeoPoint gp1 = new GeoPoint((int)(lat1 * 1E6), (int)(lon1 * 1E6)); //
                    GeoPoint gp2 = new GeoPoint((int)(lat2 * 1E6), (int)(lon2 * 1E6)); //
                    System.out.println("<< LAT1 >>");
                    System.out.println(lat1);
                    System.out.println(lon1);
                    System.out.println("<< LAT2 >>");
                    System.out.println(lat2);
                    System.out.println(lon2);

                    Point p11 = new Point();
                    Point p22 = new Point();

                    Path mypath = new Path();
                    projection.toPixels(gp1, p11);
                    projection.toPixels(gp2, p22);
                    mypath.moveTo(p22.x, p22.y);// *
                    mypath.lineTo(p11.x, p11.y);// *

                    canvas.drawPath(mypath, mPaint);
                    }
                }
            }

私がやろうとしているのは、アイテム LatArr[0] と LonArr[0] を連続して取得することです。

LatArr[0] を lat1 に、LonArr[0] を lon1 にできるようにします。また、LatArr[1] は lat2 に、LonArr[1] は lon2 にある必要があります。

しかし、このコードは LatArr[0]..[1].. と LonArr[0]..[1].. を 2 回フェッチします。すべての要素が 2 回印刷されますか?

誰でも私を修正してください。このアプローチに従ってマップ上に複数のポイントを描画するという希望をすべて失っています。このコード全体で、2 つのジオポイントを次々にマッピングします (各ジオポイントには、2 つの配列から供給される緯度と経度があります

)

4

3 に答える 3

1

両方の配列が同じ長さの場合、2 つのループではなく 1 つのループのみを使用するため、コードを次のように変更します。

for(int j=0;j<count;j++)
                    {
                        Double lat1;
                        Double lon1;
                        Double lat2;
                        Double lon2;
                        lat1 = LatArr[j];
                        lon1 = LonArr[j];
                        lat2=lat1;
                        //lat1 = null;
                        lon2=lon1;
                        //lon1 = null;
                       if(lat1!=null){
                        GeoPoint gp1 = new GeoPoint((int)(lat1 * 1E6), (int)(lon1 * 1E6)); //
                        GeoPoint gp2 = new GeoPoint((int)(lat2 * 1E6), (int)(lon2 * 1E6)); //
                        System.out.println("<< LAT1 >>");
                        System.out.println(lat1);
                        System.out.println(lon1);
                        System.out.println("<< LAT2 >>");
                        System.out.println(lat2);
                        System.out.println(lon2);

                        Point p11 = new Point();
                        Point p22 = new Point();

                        Path mypath = new Path();
                        projection.toPixels(gp1, p11);
                        projection.toPixels(gp2, p22);
                        mypath.moveTo(p22.x, p22.y);// *
                        mypath.lineTo(p11.x, p11.y);// *

                        canvas.drawPath(mypath, mPaint);
                        }
                    }
                }
于 2012-12-13T08:45:47.200 に答える
0

両方の配列から同じインデックス要素を取得できるように、毎回同じインデックスを使用します。

for(int i=0;i<count;i++){
  Double lat1;
  Double lon1;
  Double lat2;
  Double lon2;
  lat1 = LatArr[i];//  i th element from lat arr
  lon1 = LonArr[i];// i th element from lon arr
  ...
}
于 2012-12-13T08:46:25.413 に答える
0

なぜ2つのループがあるのか​​ わかりません。これを試してください:

for(int i=0;i<count-1;i++)
        {

                Double lat1;
                Double lon1;
                Double lat2;
                Double lon2;
                lat1 = LatArr[i];
                lon1 = LonArr[i];

                /*System.out.println("<< BREAK >>");
                System.out.println(lat1);
                System.out.println(lon1);
                */
                lat2=latArr[i+1];
                //lat1 = null;
                lon2=lonArr[i+1];
                //lon1 = null;


                if(lat1!=null){
                GeoPoint gp1 = new GeoPoint((int)(lat1 * 1E6), (int)(lon1 * 1E6)); //
                GeoPoint gp2 = new GeoPoint((int)(lat2 * 1E6), (int)(lon2 * 1E6)); //
                System.out.println("<< LAT1 >>");
                System.out.println(lat1);
                System.out.println(lon1);
                System.out.println("<< LAT2 >>");
                System.out.println(lat2);
                System.out.println(lon2);

                Point p11 = new Point();
                Point p22 = new Point();

                Path mypath = new Path();
                projection.toPixels(gp1, p11);
                projection.toPixels(gp2, p22);
                mypath.moveTo(p22.x, p22.y);// *
                mypath.lineTo(p11.x, p11.y);// *

                canvas.drawPath(mypath, mPaint);
                }

        }
于 2012-12-13T08:48:36.940 に答える