.cameraPosition.target不提供当前视图的中心

时间:2019-06-29 05:32:34

标签: android google-maps

我在Google地图中标记了一个位置。用户可以选择通过拖动地图来更改此位置。我正在使用摄像头位置来获取新位置。这是我的代码来获取原始位置:

insertNode(headref, &tail, studentNIM, studentName, attendance);
           ^^^^^^^

getLocationFromAddress代码工作正常。

然后,用户将拖动到新位置,完成后单击按钮,并在确认新位置后被接受。我正在尝试使用单行代码获取当前摄像机位置的纬度经度:

mMap = googleMap    
val addkey = intent.getStringExtra("address")
var addlocation = getLocationFromAddress(addkey) as LatLng
var mapLocation = CameraUpdateFactory.newLatLngZoom(addlocation, 18.0f)
mMap.animateCamera(mapLocation)

但是代码继续返回旧视图的Lat Long。我在哪里错了?

1 个答案:

答案 0 :(得分:0)

这样实现-

private GoogleMap.OnCameraIdleListener onCameraIdleListener;

然后使用相机侦听器从相机中心位置获取纬度经度,如下所示-

onCameraIdleListener = new GoogleMap.OnCameraIdleListener() {
            @Override
            public void onCameraIdle() {

                LatLng latLng = mMap.getCameraPosition().target;
                Geocoder geocoder = new Geocoder(MapsActivity.this);

                try {
                    List<Address> addressList = geocoder.getFromLocation(latLng.latitude, latLng.longitude, 1);
                    if (addressList != null && addressList.size() > 0) {
                        String locality = addressList.get(0).getAddressLine(0);
                        String country = addressList.get(0).getCountryName();
                        if (!locality.isEmpty() && !country.isEmpty())
                            resutText.setText(locality + "  " + country);
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
        };

在这里添加地址是另外一回事。如果需要,请使用它。