2011-02-09 31 views
19

Estoy utilizando la clase Geocoder a buscar varios objetos ubicación utilizando el siguiente código:Creación de Android Localización de objetos

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
    List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3); 
    Address[] addresses_array = new Address[addresses.size()]; 

    addresses.toArray(addresses_array); 
    for(int i = 0; i < addresses_array.length; i++){ 
     //create location object here 
     locOBJ.setLatitude(LATITUDE); 
     locOBJ.setLongitude(LONGITUDE); 
    } 

Además, dentro de la forloop, yo estoy tratando de crear dymanically objetos de localización para agregar a una formación;

¿Cómo puedo crear objetos de ubicación en blanco?

Respuesta

38

Suponiendo que se refiera a android.location.Location utilice el constructor que toma una cadena de proveedor y configúrelo como lo desee.

+3

Gracias, no me di cuenta de que la cuerda podría ser cualquier cosa que elija. La documentación dice "Ubicación (proveedor de cadenas)" - Me preguntaba qué proveedor se supone que es (gps, 3G ...?) – sisko

+9

GPS es un proveedor, "red" es otro (lo que puede significar wifi mac búsqueda o la celda más cercana torre). Esos son los proveedores de sistema integrados del objeto Ubicación. Dado que es su código el que proporciona (instancia) estos nuevos objetos de ubicación, la cadena del proveedor depende exclusivamente de usted. –

+2

Heh, pensé que realmente validaría y/o consultaría el proveedor especificado. Bonito, gracias. :) – DarthJDG

4

Eso no es realmente lo que está destinado, si estás buscando trazar cosas en un mapa de Google, es posible que desees consultar la clase GeoPoint. Debe utilizar la clase GeoPoint cuando se trata de objetos Map OverlayItem. ¿Qué planeas hacer con los objetos de Ubicación? También debe hacer la llamada getFromLocation en un hilo o AsyncTask ya que está haciendo una llamada remota del servidor.

utilizando la clase GeoPoint.

Geocoder geocoder = new Geocoder(this, Locale.getDefault()); 
List<Address> addresses = geocoder.getFromLocation(LATITUDE, LONGITUDE, 3); 
int size = addresses.size(); 
GeoPoint gp[] = new GeoPoint[size]; 
for(int i = 0; i<size; i++) { 
    Address addr = addresses.get(i); 
    gp[i] = new GeoPoint(addr.getLatitude()*1000000, 
         address.getLongitude()*1000000); 
} 

Los valores son * 1000000 porque GeoPoint quiere valores E6. También tenga en cuenta que si no hay coincidencias, la matriz puede tener una longitud 0.

+0

Gracias, definitivamente tienes razón al hacer esto en una clase asíncrona. Esa será una de mis próximas movidas. Por ahora quiero recopilar múltiples obects de ubicación en una matriz y asistir a cada uno con un botón de mapa. Cuando se hace clic en el botón de mapa de una ubicación, se abre la vista de mapa que muestra la ubicación. – sisko

+1

Entonces debería usar la clase Geopoint en lugar de Location. actualicé mi respuesta. –

+0

Disculpe si estoy siendo tonto, pero intenté crear un objeto Geopoint pero la clase no fue reconocida. Al buscar en este foro, encontré y probé lo siguiente: GeoPoint gp = GeoPointUtils.getGeoPoint (coords [0] .trim(), coords [1] .trim()); .......... ??? – sisko