0
private LocationManager manager;
private TextView tv;
private MapController control;
private GeoPoint chosen = null;
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.placechooser);
    final MapView map = (MapView) findViewById(R.id.gmap);
    tv=(TextView) findViewById(R.id.textView1);
    map.setBuiltInZoomControls(true);
    map.setOnTouchListener(new OnTouchListener() {
                public boolean onTouch(View v, MotionEvent event) {
                    chosen = map.getProjection().fromPixels(
                                                  (int) event.getX(), (int) event.getY());
                    tv.setText((chosen.getLatitudeE6() / (Math.pow(10,6)) + "," + (chosen.getLongitudeE6() / (Math.pow(10,6)))));
                    return true;
            }
    });

このコードスニペットは機能し、すべて、グーグルマップを見ることができます。マップ上の特定のポイントを押すと、TextViewで期待どおりの結果が得られますが、マップが移動せず、正常に応答しません。組み込みのonclicklistenerだと思います。どうすればこれを修正できますか?

私が試したこと:

  1. getOnClickLisetenerを探して保存し、クリックリスナーでアクティブ化しようとしましたが、そのようなメソッドはありません。

  2. MapOverlayクラスを作成して、on touch機能をonTouchメソッドにコピーしました。マップが移動しなかっただけでなく、map.getProjection()からnullの結果を受け取りました。

どうすればこれを克服できますか?

4

3 に答える 3

0

試す

control = map.getController();
于 2012-08-16T13:56:50.973 に答える
0

Mapviewを拡張するCustomMapviewを作成します。

その中で、onInterceptTouchEvent(MotionEvent ev)メソッドをオーバーライドします。

このような:

public boolean onInterceptTouchEvent(MotionEvent ev) {
        //your logic

        return super.onInterceptTouchEvent(ev);
    }

ロジックでは、カスタムリスナーを起動できます。これにより、どの座標が押されたかがアクティビティに通知されるため、それに応じてテキストビューを更新できます。

于 2012-08-16T13:59:19.077 に答える
0

少し複雑ですが、サブクラス化することで実行できるはずですMapView

クラス内で、この質問の答えに似MapViewた内部メンバー クラスを作成します (それを呼び出します): android-multi onClick リスナーを 1 つのボタンで作成し、そのクラスのインスタンスを作成します。CompositeListener

インスタンスへのonCreateパス中。MapView.mOnClickListenerCompositeListener

また、メソッドをオーバーライドして、カスタムクラスにsetOnClickListener設定されたリスナーをインスタンスに渡します。MapViewCompositeListener

最後に、メソッドを使用するためCompositeListenerのインスタンスを設定します。onClickListenerMapViewsuper.setOnClickListener

私はこれをテストしていないので、正しく動作させるには追加のコーディングが必要になる場合があることに注意してください。

于 2012-08-16T14:05:29.047 に答える