2010-12-15 12 views

Respuesta

13

Para el clic largo, le sugiero que revise http://www.kind-kristiansen.no/2010/handling-longpresslongclick-in-mapactivity/. Esto incluirá detalles sobre cómo escuchar eventos largos de clics dentro de la API de Maps, ya que hay poca o ninguna funcionalidad integrada que yo sepa.

En cuanto al código lat/lng, después de obtener el clic largo puede traducir los píxeles a las coordenadas.

public void recieveLongClick(MotionEvent ev) 
{ 
    Projection p = mapView.getProjection(); 
    GeoPoint geoPoint = p.fromPixels((int) ev.getX(), (int) ev.getY()); 
    // You can now pull lat/lng from geoPoint 
} 
+3

El eslabón de esta respuesta apunta a un post que escribí hace un tiempo. Acabo de escribir una nueva publicación con una solución que es más limpia y funciona mejor. Puede ser de interés: http://www.kind-kristiansen.no/2011/android-handling-longpresslongclick-on-map-revisited/ – rogerkk

4

Vas a tener que gestionar el evento LongClick y, a continuación, utilizar el código para descubrir longitud y latitud con el siguiente código:

GeoPoint geoPoint=mapView.getProjection().fromPixels((int)event.getX(),(int)event.getY()); 
int latitude = geoPoint.getLatitudeE6(); 
int longitude = geoPoint.getLongitudeE6(); 

donde 'evento' es el objeto de 'MotionEvent'.

Utilice cualquier otro evento según su caso.

0

Da latitud y longitud en qué punto del mapa, haga clic en

map.setOnMapClickListener(new OnMapClickListener() { 

     @Override 
     public void onMapClick(LatLng point) { 
      //myMap.addMarker(new MarkerOptions().position(point).title(point.toString())); 

       //The code below demonstrate how to convert between LatLng and Location 

       //Convert LatLng to Location 
       Location location = new Location("Test"); 
       location.setLatitude(point.latitude); 
       location.setLongitude(point.longitude); 
       location.setTime(new Date().getTime()); //Set time as current Date 
       txtinfo.setText(location.toString()); 

       //Convert Location to LatLng 
       LatLng newLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 

       MarkerOptions markerOptions = new MarkerOptions() 
         .position(newLatLng) 
         .title(newLatLng.toString()); 

       map.addMarker(markerOptions); 

     } 
    }); 
Cuestiones relacionadas