1

マップをタップするために dispatchTouchEvent() メソッドを使用しています。レイアウトのどこかをタップすると、緯度と経度が表示されますが、マップ エリアをタップしたときにのみ表示されるようにします。このコードの何が問題なのかわかりません:

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
    int actionType = ev.getAction();
    switch (actionType) {
    case MotionEvent.ACTION_UP:

        proj = mapView.getProjection();
        loc = (GeoPoint) proj.fromPixels((int) ev.getX(), (int) ev.getY());
        String longitude = Double
                .toString(((double) loc.getLongitudeE6()) / 1000000);
        String latitude = Double
                .toString(((double) loc.getLatitudeE6()) / 1000000);
        Toast toast = Toast.makeText(getApplicationContext(), "Longitude: "
                + longitude + " Latitude: " + latitude, Toast.LENGTH_SHORT);
        toast.show();

    }
    return super.dispatchTouchEvent(ev);
}

レイアウトのイメージは次のとおりです。

4

1 に答える 1

1

最後に私はこれを解決しました。ここで彼の解決策を見ることができます。

@Override
    public boolean onSingleTapConfirmed(MotionEvent e, MapView mapView) {

        Projection proj = mapView.getProjection();
        p = (GeoPoint) proj.fromPixels((int) e.getX(), (int) e.getY());
         proj = mapView.getProjection();
         loc = (GeoPoint) proj.fromPixels((int) e.getX(), (int) e.getY());
         String longitude = Double
         .toString(((double) loc.getLongitudeE6()) / 1000000);
         String latitude = Double
         .toString(((double) loc.getLatitudeE6()) / 1000000);
         Toast toast = Toast.makeText(getApplicationContext(),
         "Longitude: "
         + longitude + " Latitude: " + latitude, Toast.LENGTH_SHORT);
         toast.show();
        return true;
    }
于 2013-10-19T07:51:35.953 に答える