Получение некоторых странных строк, когда я пытался получить название местоположения, используя маркер на сенсорном событии на картах - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь сделать приложение, чтобы получить название местоположения, где маркер находится на карте в Android. Когда я использовал функцию marker.position(), это дало мне странную строку. Начинается с, com.google.android.gms.maps.model.MarkerOptions@28f817d

Я пытался использовать геокод, но у меня не получилось. Я мог бы использовать его ненадлежащим образом.

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng point) {
                mMap.clear();
                MarkerOptions marker = new MarkerOptions();
                mMap.addMarker(marker.position(point)
                        .draggable(true)
                        .title(String.valueOf(marker.position(point)))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                        .snippet(point.latitude + "," + point.longitude));
            }
        });
    }

I wish that I can get the location name on the title.

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

То есть, поскольку marker.position (point)) возвращает объект класса LatLng и не является самой строкой.Вы можете использовать любое из его свойств (широта и долгота):

String.valueOf(marker.position(point))

до

"" + marker.position(point).latitude + marker.position(point).longitude
0 голосов
/ 21 июня 2019

Сделайте что-то подобное

mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
            @Override
            public void onMapClick(LatLng point) {
                mMap.clear();
                MarkerOptions marker = new MarkerOptions();
                mMap.addMarker(marker.position(point)
                        .draggable(true)
                        .title(getAddress(point.getLatitude(),point.getLongitude()))
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
                        .snippet(point.latitude + "," + point.longitude));
            }
        });
    }

напишите функцию с именем getAddress вот так


public string getAddress(double lat, double lng) {
    Geocoder geocoder = new Geocoder(HomeActivity.mContext, Locale.getDefault());
    try {
        List<Address> addresses = geocoder.getFromLocation(lat, lng, 1);
        Address obj = addresses.get(0);
        String add = obj.getAddressLine(0);
        add = add + "\n" + obj.getCountryName();
        add = add + "\n" + obj.getCountryCode();
        add = add + "\n" + obj.getAdminArea();
        add = add + "\n" + obj.getPostalCode();
        add = add + "\n" + obj.getSubAdminArea();
        add = add + "\n" + obj.getLocality();
        add = add + "\n" + obj.getSubThoroughfare();

        Log.v("IGA", "Address" + add);
        // Toast.makeText(this, "Address=>" + add,
        // Toast.LENGTH_SHORT).show();

        // TennisAppActivity.showDialog(add); 
        return add;
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.getMessage(), Toast.LENGTH_SHORT).show();
        return e;
    }
}

...