Как получить широту и долготу от адреса, который пользователи вводят в текстовое поле - PullRequest
0 голосов
/ 24 января 2020

Мне нужна небольшая помощь с моим кодом. Я пытаюсь получить адрес пользователей, который они вводят из текста редактирования, получить этот адрес lattitutde и долготу и сохранить его в geofire. Я могу получить текущие значения долготы и широты пользователей и сохранить их в geofire, но что если пользователь захочет использовать другой адрес, а вместо этого я получу широту и долготу для этого указанного c адреса и сохраню его в geofire, как бы Я go об этом? Надеюсь, мой вопрос вас не смущает. Ниже мой код Спасибо заранее.

 FusedLocationClient.getLastLocation()
            .addOnSuccessListener(this, new OnSuccessListener<Location>() {
                @Override
                public void onSuccess(final Location location) {
                    if (location != null) {
                        Double latittude = location.getLatitude();
                        Double longitude = location.getLongitude();





                        String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
                        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child("address");
                        DatabaseReference update =  reference.child("Users").child(uid);

                        GeoFire geoFire=new GeoFire( reference);





                        geoFire.setLocation(uid, new GeoLocation(latittude, longitude), new GeoFire.CompletionListener() {
                            @Override
                            public void onComplete(String key, DatabaseError error) {
                                if (error != null) {
                                    System.err.println("There was an error saving your location to GeoFire: " + error);
                                } else {
                                    System.out.println("Location saved on the server successfully!");
                                }
                            }
                        });

Ответы [ 3 ]

0 голосов
/ 24 января 2020

Также вы можете использовать простое обратное геокодирование

 Location location = appLocationService
                    .getLocation(LocationManager.GPS_PROVIDER);



              if (location != null) {
                double latitude = location.getLatitude();
                double longitude = location.getLongitude();
                LocationAddress locationAddress = new LocationAddress();
                locationAddress.getAddressFromLocation(latitude, longitude,
                        getApplicationContext(), new GeocoderHandler());
            } else {
                showSettingsAlert();
            }

Посмотрите на это для получения дополнительной информации: https://javapapers.com/android/android-get-address-with-street-name-city-for-location-with-geocoding/

0 голосов
/ 24 января 2020

Попробуйте

Geocoder coder = new Geocoder(this);
List<Address> address;
double lat, lang;

try {
    address = coder.getFromLocationName(strAddress,5);
    if (address==null) {
       return null;
    }
    Address location=address.get(0);
    lat = location.getLatitude();
    lang = location.getLongitude();
}
0 голосов
/ 24 января 2020
...