web-dev-qa-db-fra.com

Comment trouver la latitude et la longitude à partir de l'adresse?

Je souhaite afficher l'emplacement d'une adresse dans Google Maps.

Comment puis-je obtenir la latitude et la longitude d'une adresse à l'aide de l'API Google Maps?

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

strAddress est une chaîne contenant l'adresse. La variable address contient les adresses converties.

132
ud_an

La solution d'Ud_an avec des API mises à jour

Remarque : LatLng La classe fait partie des services Google Play.

Obligatoire :

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

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

Mise à jour: Si vous avez le SDK cible 23 et les versions ultérieures, assurez-vous de prendre en charge les autorisations d’exécution du lieu.

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;
}
69
Nayanesh Gupte

Si vous voulez placer votre adresse dans google map, puis utilisez ce moyen facile de suivre

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

OR

si vous aviez besoin d’obtenir de votre adresse, utilisez Google Place Api après

créer une méthode qui retourne un JSONObject avec la réponse de appel HTTP comme suit

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

passe maintenant cette JSONObject à la méthode getLatLong () comme suit

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

J'espère que cela vous aide à trouver d'autres personnes .. !! Je vous remercie..!!

51
Nirav Dangi

Le code suivant fonctionnera pour 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

Où adresse est la chaîne (123 Testing Rd, code postal de la ville) que vous souhaitez convertir en LatLng.

6
Neutrino

Voici comment vous pouvez trouver la latitude et la longitude de l'endroit où vous avez cliqué sur la carte.

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

ça marche bien.

Pour obtenir l'adresse de l'emplacement, nous pouvons utiliser la classe geocoder.

3
Rakesh Gondaliya

Une réponse au problème de Kandha ci-dessus:

Il jette le "service Java.io.IOException non disponible" que j'ai déjà donné cette permission et inclut la bibliothèque ... je peux obtenir une vue de carte ... il jette cette exception IOException au géocodeur ...

Je viens d'ajouter une capture IOException après l'essai et le problème a été résolu

    catch(IOException ioEx){
        return null;
    }
1
ylag75
Geocoder coder = new Geocoder(this);
        List<Address> addresses;
        try {
            addresses = coder.getFromLocationName(address, 5);
            if (addresses == null) {
            }
            Address location = addresses.get(0);
            double lat = location.getLatitude();
            double lng = location.getLongitude();
            Log.i("Lat",""+lat);
            Log.i("Lng",""+lng);
            LatLng latLng = new LatLng(lat,lng);
            MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng);
            googleMap.addMarker(markerOptions);
            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,12));
        } catch (IOException e) {
            e.printStackTrace();
        }
0
Manikanta Reddy