更改Google地图抵消中心

时间:2017-01-23 17:19:03

标签: android google-maps offset

我正在尝试在地图上设置用户位置,使其位于距离屏幕底部大约1/3的位置,当地图旋转时,它将围绕此点旋转。

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

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

有更好的方法吗?

修改:如下图所示

enter image description here

3 个答案:

答案 0 :(得分:16)

你不需要填充

根据需要更改mappoint X和Y值,您可以在任意位置调用它!可能在您的onLocationChangedchangeOffsetCenter(location.getLatitude(),location.getLongitude());

 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)));
        }

输出:

enter image description here

答案 1 :(得分:0)

接受的答案可能是“ animateCamera”的作品。它使“旋转摇动”几乎不可见。

mMap.setPadding(leftPx,topPx,rightPx,bottomPx)

使用mMap.animateCamera 或两次mMap.moveCamera(如果更改方位 第一个moveCamera以设备的中心旋转,第二个moveCamera使用填充使中心正确)

这是一种骇客,虽然Google不能考虑setPadding来解决旋转问题

答案 2 :(得分:0)

Google Map v3 beta似乎已修复此问题,现在使用填充可以正确地移动axisX / pivotY进行旋转 https://developers.google.com/maps/documentation/android-sdk/v3-client-migration