Google Maps API MoveCamera与GetCameraPosition

时间:2018-07-22 20:57:12

标签: android google-maps

为什么我没有用GetCameraPosition()返回相同的位置,所以我用MoveCamera()设置的位置呢?

我这样测试:

设置相机:

...
LatLng curPos = new LatLng(48.1698934, 11.5515271);
mMap.moveCamera(CameraUpdateFactory.newLatLng(curPos));
Log.i("Position", setPos.toString());
...

然后在OnCamera Listener中读取位置:

 @Override
    public void onCameraIdle() {
        //The camera has stopped moving.
        CameraPosition xPos = mMap.getCameraPosition();
        Log.i("Position", xPos.toString());

    }

在Logcat中,我得到了:

xxxxxx I/Position: lat/lng: (**48.1698934,11.5515271**)
xxxxxx I/Position: CameraPosition{target=lat/lng: (**
48.16989330826159,11.551527231931688**), zoom=3.0, tilt=0.0, bearing=0.0}

肯定显示获取位置与我设置的位置不同。为什么会有这种差异?怎么解决?

1 个答案:

答案 0 :(得分:0)

它似乎是相同的,但只是四舍五入。由于您的curPos变量坐标只有7位小数,因此从技术上讲,您并未在地图上设置确切的位置。确切的位置将是双精度数最多可以采用的位置,大约为15。当摄像机到达该位置时,它将给出双精度数可以得出的最准确的数字。这就是为什么数字不完全相同的原因。 您可以尝试在lat和lng变量中添加尾随0,以解决问题。