0

Android 4.0 以降の Google MapView (API v2) で多数の (50-500) ポリゴンを描画し、タッチ イベントでそれらを変更しようとしています。dispatchTouchEvent() を介してトラップするタッチ イベントは、非常にゆっくりと動作しています。パフォーマンスが悪いため、機能しているように感じられません。

問題は、ポリゴンのコレクションをループして一度に 1 つずつマップに追加する必要があるという事実にあると思います。そのため、マップはそれぞれで再描画されます。

ドキュメントを見ると、一度に複数のポリゴンを追加する方法がわかりませんが、何かが足りないのかもしれません。どんな助けでも大歓迎です。

私のdispatchTouchEventは次のようになります。

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    if(mInDrag||mInRotate||mInAB){
        if (ev.getAction()==MotionEvent.ACTION_DOWN){
            mStartPt = mMap.getProjection().fromScreenLocation(new Point((int)ev.getX(), (int)ev.getY()));
            mLastDragTime=System.currentTimeMillis();
        } else if (ev.getAction()==MotionEvent.ACTION_MOVE){                
            LatLng endPt = mMap.getProjection().fromScreenLocation(new Point((int)ev.getX(), (int)ev.getY()));
            long iterationTime = System.currentTimeMillis()-mLastDragTime;
            //checking iterationtime so grid doesn't move after the user stops dragging
            if ((!mStartPt.equals(endPt))&&iterationTime<300) {
                LatLng delta = new LatLng(mStartPt.latitude-endPt.latitude, mStartPt.longitude-endPt.longitude);
                mLastDragTime=System.currentTimeMillis();
                if (mInDrag) {
                    //setup calcs
                } else if (mInAB){
                    //setup calcs
                } else if (mInRotate){
                    //setup calcs
                }
                clearTempGrid(); //clears the grid including erasing the existing polygons on the map.
                int gridType = gridTypeSpin.getSelectedItemPosition();
                for (PolygonOptions newPolygon : myPolygonGrid.modify(A, B)) {
                    //I run into problems here. Even 150 polygons slows it down
                    Polygon myPolygon = mMap.addPolygon(newPolygon);
                    tempPolygons.add(myPolygon);
                }
            }
        }
    }
    return super.dispatchTouchEvent(ev);
}
4

1 に答える 1

0

ドラッグ時にすべてのポリゴンを変更してもよろしいですか?

ポリゴンを一度追加してクリアせず、タッチイベントを取得するたびに再作成します。

それらを (すべて?) で変更しますPolygon.setPoints(...)

于 2013-03-20T18:20:50.860 に答える