【问题标题】:how to get lat and long on touch event from google map?如何从谷歌地图获取触摸事件的经纬度?
【发布时间】:2011-06-06 12:06:26
【问题描述】:

是否可以在触摸事件时从谷歌地图获取纬度和经度?

例如:如果我在地图上触摸纽约,它应该给我纽约的纬度和经度。

【问题讨论】:

    标签: android google-maps google-maps-api-3 latitude-longitude


    【解决方案1】:

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

    public boolean onTouchEvent(MotionEvent event)
        {
            int X = (int)event.getX();          
            int Y = (int)event.getY();
    
            GeoPoint geoPoint = mapView.getProjection().fromPixels(X, Y);
        }
    

    【讨论】:

      【解决方案2】:

      您可以直接在 GoogleMap 对象上设置OnMapClickListener,而不是使用叠加层拦截 TouchEvent。

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

      如何从 MapFragmentMapView 获取 GoogleMap 对象,请参阅 https://developers.google.com/maps/documentation/android/map#add_map_code

      【讨论】:

        【解决方案3】:

        试试这个

         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;
            }}
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-04-11
          • 2013-07-13
          • 2013-03-03
          相关资源
          最近更新 更多