Как получить координаты адреса в Android - PullRequest
30 голосов
/ 14 марта 2012

Как получить координаты GPS местоположения / адреса, введенного пользователем в Android?

Ответы [ 5 ]

75 голосов
/ 14 марта 2012
Geocoder geocoder = new Geocoder(<your context>);  
List<Address> addresses;
addresses = geocoder.getFromLocationName(<String address>, 1);
if(addresses.size() > 0) {
    double latitude= addresses.get(0).getLatitude();
    double longitude= addresses.get(0).getLongitude();
}
11 голосов
/ 14 марта 2012

Вы можете использовать Android Geocoder для обратного геокодирования:

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocationName(myLocation, 1);
Address address = addresses.get(0);
double longitude = address.getLongitude();
double latitude = address.getLatitude();

Также включите в AndroidManifest.xml следующее:

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

Также обратите внимание, что вам нужно использоватьAPI, который включает в себя реализацию Geocoder.API, которые включают это, например, API Google Android.Вы можете использовать Geocoder.isPresent(), чтобы проверить, существует ли реализация для вашего целевого API.

Ознакомьтесь с документацией Geocoder для получения дополнительной информации.

3 голосов
/ 14 марта 2012
List<Address> addresses;
addresses = geocoder.getFromLocationName(<String address>, 1);
if(addresses.size() > 0){
double latitude= addresses.get(0).getLatitude();
double longitude= addresses.get(0).getLongitude();
}

разрешения для манифеста: -

android.permission.INTERNET
android.permission.ACCESS_COARSE_LOCATION
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_MOCK_LOCATION
2 голосов
/ 03 июля 2012

используйте разрешения манифеста, такие как

android.permission.INTERNET 
android.permission.ACCESS_COARSE_LOCATION     
android.permission.ACCESS_FINE_LOCATION 
android.permission.ACCESS_MOCK_LOCATION

и используйте это

Geocoder geocoder = new Geocoder(this, Locale.getDefault());
List<Address> addresses = geocoder.getFromLocationName(myLocation, 1);
Address address = addresses.get(0);
if(addresses.size() > 0) {
    double latitude = addresses.get(0).getLatitude();
    double longitude = addresses.get(0).getLongitude();
}
0 голосов
/ 24 ноября 2018

Вот полный пример

Сначала определите масштаб

    final CameraUpdate zoom = CameraUpdateFactory.zoomTo(5);

Очистите все маркеры карты

    mMap.clear();
    //Declare a new marker
    final MarkerOptions mp = new MarkerOptions();
    //declare a EditText to get the user informed address
    EditText etEndereco = findViewById(R.id.map_prof_etEnd);

    Geocoder geocoder = new Geocoder(map_prof.this);
    List<Address> addresses = null;
    try {
        addresses = geocoder.getFromLocationName(etEndereco.getText().toString(), 1);
    } catch (IOException e) {
        e.printStackTrace();
    }
    if (addresses.size() > 0) {
        double latitude = addresses.get(0).getLatitude();
        double longitude = addresses.get(0).getLongitude();

        mp.position(new LatLng(latitude, longitude));

        Log.e("teste map2", "inserted latitude " + Latitude + ", inserted Longitude " + Longitude);

        mp.title("Selected location");
        CameraUpdate center = CameraUpdateFactory.newLatLng(new LatLng(latitude, longitude));
        mMap.clear();
        mMap.addMarker(mp);
        mMap.moveCamera(center);
        mMap.animateCamera(zoom);
    }
...