为什么我没有用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}
肯定显示获取位置与我设置的位置不同。为什么会有这种差异?怎么解决?
答案 0 :(得分:0)
它似乎是相同的,但只是四舍五入。由于您的curPos变量坐标只有7位小数,因此从技术上讲,您并未在地图上设置确切的位置。确切的位置将是双精度数最多可以采用的位置,大约为15。当摄像机到达该位置时,它将给出双精度数可以得出的最准确的数字。这就是为什么数字不完全相同的原因。
您可以尝试在lat和lng变量中添加尾随0,以解决问题。