2017-11-28 20 views
0

私は、指定された半径の円の周囲にマーカーを追加しようとしています。私の中心点は私の地図上の現在の位置です。私は私の周りに10の中間点を追加しようとしています。私は円の点を見つけるためにピタゴラスの方法を使用しようとしていますが、私の計算はここでは正しいとは思いません。ここでGoogleマップの円周上にマーカーを追加する

は私の機能です:ここ

private void drawCirclePoints() 
    {  
     int numOfPoints = 10; 
     int radius = 100; 
     LatLng center = new LatLng(homeBase.latitude, homeBase.longitude); 
     double slice = 360/numOfPoints; 
     ArrayList<LatLng> centerArray = new ArrayList<>(); 

     for (int i = 0; i < numOfPoints; i++) 
     { 
      double angle = slice * i; 
      double X = center.latitude + radius * Math.cos(angle * Math.PI/180); 
      double Y = center.longitude + radius * Math.sin(angle * Math.PI/180); 
      centerArray.add(new LatLng(X, Y)); 
     } 

     CircleOptions circleOptions = new CircleOptions(); 
     circleOptions.center(homeBase); 
     circleOptions.radius(radius); 
     circleOptions.fillColor(0x33FF0000); 
     circleOptions.strokeColor(Color.BLUE); 
     circleOptions.strokeWidth(3); 

     for (int i = 0; i < centerArray.size(); i++) 
     { 
      setMarker("sample", centerArray.get(i).latitude, centerArray.get(i).longitude); 

     } 

     markercircle = mMap.addCircle(circleOptions); 

    } 

私の問題は、返された座標が正しくないか、私が期待したものです。私は間違って何をしていますか?

答えて

0

あなたが期待していることはわかりません。結果を少数の小数点に切り捨てたり、結果を印刷しようとしましたか?はいの場合は共有してください!

コードを少し修正しましたが、結果は予想通りでした。

int numOfPoints = 4; 
    int radius = 100; 

    LatLng center = new LatLng(0.0, 0.0); 

    double slice = 360/numOfPoints; 
    ArrayList<LatLng> centerArray = new ArrayList<>(); 

    for (int i = 0; i < numOfPoints; i++) 
    { 
     double angle = slice * i; 
     double X = center.latitude + radius * Math.cos(angle * Math.PI/180); 
     double Y = center.longitude + radius * Math.sin(angle * Math.PI/180); 

     DecimalFormat df = new DecimalFormat("#.##"); 
     centerArray.add(new LatLng(Double.parseDouble(df.format(X)), Double.parseDouble(df.format(Y)))); 
    } 

    for (int i = 0; i < centerArray.size(); i++) 
    { 
     System.out.println("point " + (i + 1) + " = X:" + centerArray.get(i).latitude + ", Y: " + centerArray.get(i).longitude); 

    } 

結果:
点1 = X:100.0、Y:0.0
点2 = X:0.0、Y:100.0
点3 = X:-100.0、Y:0.0
ポイント4 = X:-0.0、Y:-100.0

+0

もう少しグーグルしてから。私は私の答えに到着したと思う。上記の方法は問題ありませんが、必要な答えを私に与えることはありません。私はまだ自分のデカルト座標を緯度と経度に変換する必要があります(平坦な地球近似を前提とします)。 – MaskedAfrican

関連する問題