0

この関数を以下のコードに追加するにはどうすればよいですか? URL は次のとおりです: Android の OSM マップにマーカーを追加する方法を教えてください。ユーザーが画面上でタッチしたすべての場所のトースト メッセージを印刷し、トースト メッセージ内の地図上に緯度と経度を表示する機能を追加したい

public boolean onTouchEvent(MotionEvent event, MapView mapView) {   

    if (event.getAction() == 1) {                
        GeoPoint geopoint = (GeoPoint) mapView.getProjection().fromPixels((int) event.getX(), (int) event.getY());
        // latitude
        double lat = geopoint.getLatitudeE6() / 1E6;
        // longitude
        double lon = geopoint.getLongitudeE6() / 1E6;
        Toast.makeText(context, "Lat: " + lat + ", Lon: "+lon, Toast.LENGTH_SHORT).show();
    }                            
    return false;
} 
4

1 に答える 1

1

このコードを使用して、このクラスのオブジェクトを作成し、mapsOverlay に追加します。

class MapOverlay extends com.google.android.maps.Overlay
{
    @Override
    public boolean draw(Canvas canvas, MapView mapView, 
    boolean shadow, long when) 
    {
       //...
    }

    @Override
    public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    {   
        //---when user lifts his finger---
        if (event.getAction() == MotionEvent.ACTION_UP) {                
            GeoPoint p = mapView.getProjection().fromPixels(
                (int) event.getX(),
                (int) event.getY());
                Toast.makeText(getBaseContext(), 
                    p.getLatitudeE6() / 1E6 + "," + 
                    p.getLongitudeE6() /1E6 , 
                    Toast.LENGTH_SHORT).show();
        }                            
        return false;
    }        
}

この行を追加

mapView.getOverlays().add(new MapOverlay());
于 2012-12-05T11:53:23.317 に答える