Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从谷歌地图上获取lat和long on touch事件?_Android_Google Maps_Google Maps Api 3_Latitude Longitude - Fatal编程技术网

Android 如何从谷歌地图上获取lat和long on touch事件?

Android 如何从谷歌地图上获取lat和long on touch事件?,android,google-maps,google-maps-api-3,latitude-longitude,Android,Google Maps,Google Maps Api 3,Latitude Longitude,有可能在触摸事件中从谷歌地图获取纬度和经度吗 例如:如果我在地图上触摸纽约,它会告诉我纽约的纬度和经度。你可以从大多数触摸事件中获得位置,例如 public boolean onTouchEvent(MotionEvent event) { int X = (int)event.getX(); int Y = (int)event.getY(); GeoPoint geoPoint = mapView.getProje

有可能在触摸事件中从谷歌地图获取纬度和经度吗


例如:如果我在地图上触摸纽约,它会告诉我纽约的纬度和经度。

你可以从大多数触摸事件中获得位置,例如

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

        GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y);
    }
试试这个

 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;
    }}
公共类谷歌地图扩展了地图活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u谷歌地图);
MapView MapView=(MapView)findViewById(R.id.MapView);
mapview.SetBuilTinZoomControl(真);
MapOverlay MapOverlay=新的MapOverlay();
List ListoForLays=mapview.getOverlays();
listOfOverlays.clear();
添加(映射覆盖);
mapview.invalidate();
}
类MapOverlay扩展了Overlay
{
@凌驾
公共布尔onTouchEvent(MotionEvent事件,MapView MapView)
{   
//---当用户抬起手指时---
如果(event.getAction()==1){
地理点p=mapView.getProjection().fromPixels(
(int)event.getX(),
(int)event.getY();
Toast.makeText(getBaseContext(),
p、 getLatitudeE6()/1E6+“,”+
p、 getLongitudeE6()/1E6,
吐司。长度(短)。show();
}                            
返回false;
}        
}
@凌驾
受保护的布尔值isRouteDisplayed(){
返回false;
}}

您可以直接在GoogleMap对象上设置一个
OnMapClickListener
,而不是使用覆盖截取TouchEvent

googleMap.setOnMapClickListener(new OnMapClickListener(){
        void onMapClick(LatLng point){
            Toast.makeText(getContext(),
                point.latitude + ", " + point.longitude,
                Toast.LENGTH_SHORT).show();
        }
    });
如何从
MapFragment
MapView
获取GoogleMap对象,请参见