android - 如何在 getMyLocationAddress 方法中的 onLocationChanged 中访问我的当前位置?

标签 android google-maps android-studio android-location currentlocation

我想在 getMyLocationAddress 的 onLocationChanged 方法中访问我的当前位置,以设置文本框的文本。我想知道我的位置准确存储在哪个变量中,以便我可以在 geocoder.getLocationFrom() 中使用它。

我在 geocoder.getFromLocation(latLng.getLatitude(),latLng.getLongitude(),1) 中使用 LatLng 对象 latLng; 我猜这就是当前位置的存储位置。但是 getFromLocation 需要 Location 对象。我应该使用哪个 Location 对象,因为 LatLng 对象显然会出错?

@Override
    public void onLocationChanged(Location location) {

        mLastLocation = location;
        if (mCurrLocationMarker != null) {
            mCurrLocationMarker.remove();
        }

        //Place current location marker
        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
        MarkerOptions markerOptions = new MarkerOptions();
        markerOptions.position(latLng);
        markerOptions.title("Current Position");
        markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE));
        mCurrLocationMarker = mMap.addMarker(markerOptions);

        //move map camera
        mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
        mMap.animateCamera(CameraUpdateFactory.zoomTo(50));

        //stop location updates
        if (mGoogleApiClient != null) {
            LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, this);
        }

    }


 public void getMyLocationAddress() {

    Geocoder geocoder= new Geocoder(this, Locale.ENGLISH);

    try {

        //Place your latitude and longitude
       //List<Address> addresses = geocoder.getFromLocation(37.423247,-122.085469, 1);
        List<Address> addresses = geocoder.getFromLocation(latLng.getLatitude(),latLng.getLongitude(),1);

        if(addresses != null) {

            Address fetchedAddress = addresses.get(0);
            StringBuilder strAddress = new StringBuilder();

            for(int i=0; i<fetchedAddress.getMaxAddressLineIndex(); i++) {
                strAddress.append(fetchedAddress.getAddressLine(i)).append("\n");
            }

            etOrigin.setText(strAddress.toString());

        }

        else
            etOrigin.setText("No location found..!");

    }
    catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(getApplicationContext(),"Could not get address..!", Toast.LENGTH_LONG).show();
    }
}

最佳答案

您需要使用 Location 类型的变量。

您可以在这里阅读更多内容: https://developer.android.com/reference/android/location/Location.html

关于android - 如何在 getMyLocationAddress 方法中的 onLocationChanged 中访问我的当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038538/

相关文章:

java - 在 Android 中使用 ItemizedOverlay 添加可见的 "Markers"以表示地理点到 MapView

javascript - 使用 JQuery 在 Google Maps API (V3) 上禁用 infoWindow/Box 内的链接?

javascript - 谷歌地图使用地点 ID 添加标记

安卓工作室 : How to delete crashlytics plugin

开发后Android小部件未显示在列表中

Android AlarmManager 在应用程序被终止时不会触发

android - Google Places Android API 中的 rankby=distance

javascript - 谷歌地图 Javascript V3.21 无法显示 geoJSON 功能

java - 如何从 WebView 下载图像

android - Media Player应用程序中的多个声音崩溃