как получить широту и время на сенсорном событии с карты Google? - PullRequest
5 голосов
/ 10 января 2011

Можно ли получить широту и долготу с карты Google на сенсорном событии?

Например: если я коснусь Нью-Йорка на карте, он должен дать мне широту и долготу Нью-Йорка.

Ответы [ 3 ]

15 голосов
/ 22 января 2015

Вместо перехвата TouchEvent с наложением можно установить OnMapClickListener непосредственно для объекта GoogleMap.

googleMap.setOnMapClickListener(new OnMapClickListener(){
        void onMapClick(LatLng point){
            Toast.makeText(getContext(),
                point.latitude + ", " + point.longitude,
                Toast.LENGTH_SHORT).show();
        }
    });

Как получить объект GoogleMap из MapFragment или MapView см.https://developers.google.com/maps/documentation/android/map#add_map_code

14 голосов
/ 10 января 2011

Вы можете получить местоположение из большинства событий касания, например,

public boolean onTouchEvent(MotionEvent event)
    {
        int X = (int)event.getX();          
        int Y = (int)event.getY();

        GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y);
    }
5 голосов
/ 13 декабря 2012

Попробуйте это

 public class Google_maps extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_google_maps);


        MapView mapview=(MapView)findViewById(R.id.mapView);
        mapview.setBuiltInZoomControls(true);
        MapOverlay mapOverlay = new MapOverlay();
        List<Overlay> listOfOverlays = mapview.getOverlays();
        listOfOverlays.clear();
        listOfOverlays.add(mapOverlay);        

        mapview.invalidate();

    }

    class MapOverlay extends Overlay
    {

        @Override
        public boolean onTouchEvent(MotionEvent event, MapView mapView) 
        {   
            //---when user lifts his finger---
            if (event.getAction() == 1) {                
                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;
        }        
    }
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }}
...