提问者:小点点

更改谷歌地图偏移中心


我正在尝试在地图上设置用户位置,使其位于屏幕底部向上1/3的位置,并且当地图旋转时,它将围绕该点旋转。

我最接近实现这一点的方法是使用setPadd()方法,然而,这会导致地图在旋转时有点摇晃,因为中心点有点“浮动”在它实际应该在的地方。它看起来很丑陋

int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);

有没有更好的方法来做到这一点?

编辑:解释如下图


共3个答案

匿名用户

你不需要垫片

根据需要更改指定的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