¿Cómo puedo encontrar la latitud y longitud de la dirección?

Resuelto Kandha asked hace 54 años • 10 respuestas

Quiero mostrar la ubicación de una dirección en Google Maps.

¿Cómo obtengo la latitud y longitud de una dirección utilizando la API de Google Maps?

Kandha avatar Jan 01 '70 08:01 Kandha
Aceptado
public GeoPoint getLocationFromAddress(String strAddress) {

    Geocoder coder = new Geocoder(this);
    List<Address> address;
    GeoPoint p1 = null;

    try {
        address = coder.getFromLocationName(strAddress, 5);
        if (address == null) {
            return null;
        }
        Address location = address.get(0);
        location.getLatitude();
        location.getLongitude();

        p1 = new GeoPoint((double) (location.getLatitude() * 1E6),
                (double) (location.getLongitude() * 1E6));

        return p1;
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
}

strAddresses una cadena que contiene la dirección. La addressvariable contiene las direcciones convertidas.

ud_an avatar Aug 26 '2010 11:08 ud_an

La solución de Ud_an con API actualizadas

Nota : la clase LatLng es parte de los servicios de Google Play.

Obligatorio :

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

<uses-permission android:name="android.permission.INTERNET"/>

Actualización: si tiene el SDK de destino 23 y superior, asegúrese de cuidar el permiso de tiempo de ejecución para la ubicación.

public LatLng getLocationFromAddress(Context context,String strAddress) {

    Geocoder coder = new Geocoder(context);
    List<Address> address;
    LatLng p1 = null;

    try {
        // May throw an IOException
        address = coder.getFromLocationName(strAddress, 5);
        if (address == null) {
            return null;
        }

        Address location = address.get(0);
        p1 = new LatLng(location.getLatitude(), location.getLongitude() );

    } catch (IOException ex) {

        ex.printStackTrace();
    }

    return p1;
}
Nayanesh Gupte avatar Jan 08 '2015 06:01 Nayanesh Gupte

Si desea colocar su dirección en el mapa de Google, utilice la siguiente manera fácil

Intent searchAddress = new  Intent(Intent.ACTION_VIEW,Uri.parse("geo:0,0?q="+address));
startActivity(searchAddress);

O

Si necesita obtener una longitud larga desde su dirección, utilice Google Place Api a continuación

cree un método que devuelva un JSONObject con la respuesta de la llamada HTTP como se muestra a continuación

public static JSONObject getLocationInfo(String address) {
        StringBuilder stringBuilder = new StringBuilder();
        try {

        address = address.replaceAll(" ","%20");    

        HttpPost httppost = new HttpPost("http://maps.google.com/maps/api/geocode/json?address=" + address + "&sensor=false");
        HttpClient client = new DefaultHttpClient();
        HttpResponse response;
        stringBuilder = new StringBuilder();


            response = client.execute(httppost);
            HttpEntity entity = response.getEntity();
            InputStream stream = entity.getContent();
            int b;
            while ((b = stream.read()) != -1) {
                stringBuilder.append((char) b);
            }
        } catch (ClientProtocolException e) {
        } catch (IOException e) {
        }

        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject = new JSONObject(stringBuilder.toString());
        } catch (JSONException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return jsonObject;
    }

ahora pase ese JSONObject al método getLatLong() como se muestra a continuación

public static boolean getLatLong(JSONObject jsonObject) {

        try {

            longitute = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
                .getJSONObject("geometry").getJSONObject("location")
                .getDouble("lng");

            latitude = ((JSONArray)jsonObject.get("results")).getJSONObject(0)
                .getJSONObject("geometry").getJSONObject("location")
                .getDouble("lat");

        } catch (JSONException e) {
            return false;

        }

        return true;
    }

Espero que esto te ayude a encontrar a otros..!! Gracias..!!

Nirav Dangi avatar Nov 25 '2011 09:11 Nirav Dangi

El siguiente código funcionará para Google apiv2:

public void convertAddress() {
    if (address != null && !address.isEmpty()) {
        try {
            List<Address> addressList = geoCoder.getFromLocationName(address, 1);
            if (addressList != null && addressList.size() > 0) {
                double lat = addressList.get(0).getLatitude();
                double lng = addressList.get(0).getLongitude();
            }
        } catch (Exception e) {
            e.printStackTrace();
        } // end catch
    } // end if
} // end convertAddress

Donde la dirección es la cadena (123 Testing Rd Ciudad Estado zip) que desea convertir a LatLng.

Neutrino avatar May 21 '2014 09:05 Neutrino

Una respuesta al problema de Kandha anterior:

Lanza el "servicio java.io.IOException no disponible". Ya le di ese permiso e incluyo la biblioteca... puedo obtener una vista de mapa... arroja esa IOException al geocodificador...

Acabo de agregar una captura IOException después del intento y resolvió el problema.

    catch(IOException ioEx){
        return null;
    }
ylag75 avatar Dec 25 '2014 16:12 ylag75