ポリゴンタッチ検出Google Map API V2

ドウィル:

私はこれを行うための最善の方法を見つけようとしPolygonています。地図が描かれた地図がありますGoogle Maps API V2がポリゴン上でタッチ検出をしているようには見えないので。タッチポイントがポリゴンの内側にあるかどうかを検出することは可能ですか?もしそうなら、どのように、私の主な目標は、マップ上の状態を概説することであり、ユーザーがその状態をタップすると、カスタムビュー内に詳細が表示されます。現在のところMapOnClick、マップのをキャプチャすることができますが、ユーザーがをタップするPolygonと、のpolygon.getID()セットが必要になりToastます。私は初心者ですので、はっきりしていなければ謝罪します。

googleMap.setOnMapClickListener(new OnMapClickListener() 
    {
        public void onMapClick(LatLng point) 
        {
        boolean checkPoly = true;

        Toast.makeText(MainActivity.this,"The Location is outside of the Area", Toast.LENGTH_LONG).show();
        }    
     });
     }
     }
   catch (Exception e) {
         Log.e("APP","Failed", e);
     }    

これは私がこれまでセミワークしてきたものです

    private boolean rayCastIntersect(LatLng tap, LatLng vertA, LatLng vertB) {

    double aY = vertA.latitude;
    double bY = vertB.latitude;
    double aX = vertA.longitude;
    double bX = vertB.longitude;
    double pY = tap.latitude;
    double pX = tap.longitude;
     if (aY > bY) {
            aX = vertB.longitude;
            aY = vertB.latitude;
            bX = vertA.longitude;
            bX = vertA.latitude;
        }
    System.out.println("aY: "+aY+" aX : "+aX);
    System.out.println("bY: "+bY+" bX : "+bX);

     if (pX < 0) pX += 360;
        if (aX < 0) aX += 360;
        if (bX < 0) bX += 360;

        if (pY == aY || pY == bY) pY += 0.00000001;
        if ((pY > bY || pY < aY) || (pX > Math.max(aX, bX))) return false;
        if (pX < Math.min(aX, bX))

            return true;
//  }

    double m = (aX != bX) ? ((bY - aY) / (bX - aX)) : aX;
    double bee = (aX != pX) ? ((pY - aY) / (pX - aX)) : aX;
    double x = (pY - bee) / m;

    return x > pX;
}

}

私が抱えている問題は、各ポリゴンの左側が別のポリゴンに到達するまでのタッチです。この問題の原因となる私のアルゴリズムの何が問題になっていますか?任意の助けいただければ幸いです。

マット:

解決しようとしている問題は、ポリゴン内ポイントテストです。

レイキャスティングの概念を視覚化するには:

一枚の紙にポリゴンを描きます。次に、任意の点から開始して、ページの右側に直線を引きます。ラインがポリゴンと奇数回交差した場合、これは開始点がポリゴンの内側にあったことを意味します。


では、コードでそれをどのように行うのでしょうか。

ポリゴンは頂点のリストで構成されています:ArrayList<Geopoint> verticesそれぞれをLine Segment個別に見て、Ray交差するかどうかを確認する必要があります

private boolean isPointInPolygon(Geopoint tap, ArrayList<Geopoint> vertices) {
    int intersectCount = 0;
    for(int j=0; j<vertices.size()-1; j++) {
        if( rayCastIntersect(tap, vertices.get(j), vertices.get(j+1)) ) {
            intersectCount++;
        }
    }

    return (intersectCount%2) == 1); // odd = inside, even = outside;
}

private boolean rayCastIntersect(Geopoint tap, Geopoint vertA, Geopoint vertB) {

    double aY = vertA.getLatitude();
    double bY = vertB.getLatitude();
    double aX = vertA.getLongitude();
    double bX = vertB.getLongitude();
    double pY = tap.getLatitude();
    double pX = tap.getLongitude();

    if ( (aY>pY && bY>pY) || (aY<pY && bY<pY) || (aX<pX && bX<pX) ) {
        return false; // a and b can't both be above or below pt.y, and a or b must be east of pt.x
    }

    double m = (aY-bY) / (aX-bX);               // Rise over run
    double bee = (-aX) * m + aY;                // y = mx + b
    double x = (pY - bee) / m;                  // algebra is neat!

    return x > pX;
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Google map API v2 Android - Markers & scale

分類Dev

How to change Language on Android google map V2 api

分類Dev

How can I get current zoom level from Google Map Api v2?

分類Dev

Google map V2 in fragment crash

分類Dev

polyline width conversion map api v2

分類Dev

How to download and use offline maps in Map API V2?

分類Dev

Google Maps Android API v2

分類Dev

how to draw text in default marker of google map v2

分類Dev

Android google map v2 error at marker's icon

分類Dev

How to clear Google map v2 except few markers?

分類Dev

Google Maps Android API v2 Authorization failure

分類Dev

Can't connect to Google Maps Api Android V2

分類Dev

Overlay an image on google maps android api v2

分類Dev

How to set api key for Google maps v2

分類Dev

Google Maps V2 - API key not found Error Message

分類Dev

Google map api v3:ボタンをクリックすると、ポリゴンが編集不能になります

分類Dev

Google Map Api v2のログに「V / GoogleSignatureVerifier:署名が無効です」というエラーメッセージが表示される

分類Dev

Google Map Api v2のログに「V / GoogleSignatureVerifier:署名が無効です」というエラーメッセージが表示される

分類Dev

Mailchimp API v2

分類Dev

ポリゴンに複数の穴を描く-nokiamaps api v2

分類Dev

AndroidカスタムInfoWindowGoogle Map v2 onclickボタン?

分類Dev

Google Map API V3 - infowindows @ markers on 2 maps

分類Dev

Android Google Map V2、出力が表示されない

分類Dev

ReCaptcha API v2スタイリング

分類Dev

Map API V2でオフラインマップをダウンロードして使用するにはどうすればよいですか?

分類Dev

Google Map API v2を使用して、Androidで現在地から目的地までのルートを描画します

分類Dev

GoogleマップAndroid API v2と現在の場所

分類Dev

ObjectiveDropboxOfficial (Dropbox V2 API) でディレクトリを検出する

分類Dev

Google Cloud Logging:V2 APIでv1エントリを検索しますか?

Related 関連記事

  1. 1

    Google map API v2 Android - Markers & scale

  2. 2

    How to change Language on Android google map V2 api

  3. 3

    How can I get current zoom level from Google Map Api v2?

  4. 4

    Google map V2 in fragment crash

  5. 5

    polyline width conversion map api v2

  6. 6

    How to download and use offline maps in Map API V2?

  7. 7

    Google Maps Android API v2

  8. 8

    how to draw text in default marker of google map v2

  9. 9

    Android google map v2 error at marker's icon

  10. 10

    How to clear Google map v2 except few markers?

  11. 11

    Google Maps Android API v2 Authorization failure

  12. 12

    Can't connect to Google Maps Api Android V2

  13. 13

    Overlay an image on google maps android api v2

  14. 14

    How to set api key for Google maps v2

  15. 15

    Google Maps V2 - API key not found Error Message

  16. 16

    Google map api v3:ボタンをクリックすると、ポリゴンが編集不能になります

  17. 17

    Google Map Api v2のログに「V / GoogleSignatureVerifier:署名が無効です」というエラーメッセージが表示される

  18. 18

    Google Map Api v2のログに「V / GoogleSignatureVerifier:署名が無効です」というエラーメッセージが表示される

  19. 19

    Mailchimp API v2

  20. 20

    ポリゴンに複数の穴を描く-nokiamaps api v2

  21. 21

    AndroidカスタムInfoWindowGoogle Map v2 onclickボタン?

  22. 22

    Google Map API V3 - infowindows @ markers on 2 maps

  23. 23

    Android Google Map V2、出力が表示されない

  24. 24

    ReCaptcha API v2スタイリング

  25. 25

    Map API V2でオフラインマップをダウンロードして使用するにはどうすればよいですか?

  26. 26

    Google Map API v2を使用して、Androidで現在地から目的地までのルートを描画します

  27. 27

    GoogleマップAndroid API v2と現在の場所

  28. 28

    ObjectiveDropboxOfficial (Dropbox V2 API) でディレクトリを検出する

  29. 29

    Google Cloud Logging:V2 APIでv1エントリを検索しますか?

ホットタグ

アーカイブ