0

私はこれに固執しています、私はあらゆる可能性を試しましたが、成功しませんでした。私はテスト用の地図を使って簡単なアプリケーションを作成しました。ユーザーは地図に簡単にタッチして、その場所にマーカーを置くことができます。これは、htcデバイスを除くすべてのデバイスで正常に機能します。mapviewにonTouchイベントを実装する方法がわかりません

これがonTouchの私のコードです

private class MarkerOverlay extends Overlay{        
    private boolean isMove;
    @Override
    public boolean onTouchEvent(MotionEvent e, MapView mapView) {           
        final int x = (int) e.getX();
        final int y = (int) e.getY();
        if(e.getAction()==1){
            if(!isMove){
                geopoint = mapView.getProjection().fromPixels(x, y);
                OverlayItem overlayItem = new OverlayItem(geopoint, "Title", "Description");
                if(mapOverlay.m_overlays.size()>=1){
                    mapOverlay.clearOverlayAll();
                }
                mapOverlay.addOverlay(overlayItem);
                if(!mapView.getOverlays().contains(mapOverlay))
                    mapView.getOverlays().add(mapOverlay);

                mapView.invalidate();
                Toast.makeText(SimpleMapMarkerActivity.this, "in press", Toast.LENGTH_SHORT).show();
            }else{
                Toast.makeText(SimpleMapMarkerActivity.this, "out press", Toast.LENGTH_SHORT).show();
            }
        }else if(e.getAction()==MotionEvent.ACTION_DOWN)
            isMove = false;
        else if(e.getAction()==MotionEvent.ACTION_MOVE)
            isMove = true;

        return super.onTouchEvent(e, mapView);
    }
}
4

3 に答える 3

0

私も同じ問題を抱えていました。それがあなたのhtcの問題を解決できるかどうかはわかりません。しかし、これが私がしたことです:

dispatchTouchEventをオーバーライドしました。それは私のサムスンギャラクシーs2で動作します。

    @Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    // TODO Auto-generated method stub
    if(ev.getAction() == MotionEvent.ACTION_DOWN){
        xPos = ev.getX();
        yPos = ev.getY();
    }
    if (ev.getAction() == MotionEvent.ACTION_UP){
        if (xPos==ev.getX() && yPos == ev.getY()){
        Log.i(LOG_TAG, "Calling onTouch from dispatchTouchEvent.");
            onTouch(mapView, ev);
        }
    }
    return super.dispatchTouchEvent(ev);
}

私はmapActivityでこれを行っています。overLayではありません。

于 2011-12-30T08:55:22.377 に答える
0

MapMarkerExample

この例は、移動可能なマーカーをマップに描画する方法を示しています。マーカーをドラッグアンドドロップして、その位置を変更できます。マップの場所についてユーザーから入力を受け取りたいアプリケーションで使用できます。

アルゴリズム:

1.)[ファイル]->[新規]->[Androidプロジェクト]で新しいプロジェクトを作成し、MapMarkerExampleという名前を付けます。2.)main.xmlおよびandroidマニフェストファイルにデフォルトのコードが表示されます。3.)マニフェストファイルにインターネット権限を追加するか、android.manifestファイルに次のように書き込みます。

http://www.edumobile.org/android/android-apps/mapmarkerexample/

于 2011-12-30T09:24:22.470 に答える
0

私は解決策を手に入れましたそしてこの解決策はharismによって与えられました

地図をタップして市場を表示するのと同じように、地図を使用してマーカーを実装する場合は常に、を実装しonTap(GeoPoint g, MapView mapview)ます。

また、ドラッグアンドドロップのようにユーザーが移動するようにマーカーを実装する場合は、を使用して実装しonTouch()ます。onTouch()ドラッグアンドドロップのような移動マーカーについては、このリンクを確認してください

http://www.edumobile.org/android/android-apps/mapmarkerexample/

于 2012-01-02T11:33:31.120 に答える