我正在尝试在地图上设置用户位置,使其位于屏幕底部向上1/3的位置,并且当地图旋转时,它将围绕该点旋转。
我最接近实现这一点的方法是使用setPadd()
方法,然而,这会导致地图在旋转时有点摇晃,因为中心点有点“浮动”在它实际应该在的地方。它看起来很丑陋
int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);
有没有更好的方法来做到这一点?
编辑:解释如下图
你不需要垫片
根据需要更改指定的X和Y值,您可以在任何您想要的地方调用它!可能在您的onLocationChanged
中,例如changeOffsetCenter(location. getLatiity(),location.get浪度());
public void changeOffsetCenter(double latitude,double longitude) {
Point mappoint = mGoogleMap.getProjection().toScreenLocation(new LatLng(latitude, longitude));
mappoint.set(mappoint.x, mappoint.y-100); // change these values as you need , just hard coded a value if you want you can give it based on a ratio like using DisplayMetrics as well
mGoogleMap.animateCamera(CameraUpdateFactory.newLatLng(mGoogleMap.getProjection().fromScreenLocation(mappoint)));
}
输出:
谷歌地图v3beta似乎修复了它,使用填充现在正确移动枢轴X/枢轴旋转https://developers.google.com/maps/documentation/android-sdk/v3-client-migration
接受的答案可能是“动画相机”的作品。它使“旋转的晃动”几乎不可见。所以使用起来会更容易
mMap. setPadd(leftPx,topPx,rightPx,backomPx)
使用mMap. moveCamera或两次mMap.moveCamera(在改变轴承的情况下,第一次移动相机以设备中心旋转,第二次移动相机使用填充使正确的中心)
它的那种黑客,而谷歌不修复旋转考虑setPadd