更改 Google 地图偏移中心
Change Google Map Offset Center
我正在尝试设置用户在地图上的位置,使其位于屏幕底部向上大约 1/3 的位置,当地图旋转时,它会围绕该点旋转。
我最接近的实现方法是使用 setPadding()
方法,但是,这会导致地图在旋转时有点晃动,因为中心点有点 'floats' 左右它实际上应该在哪里。长得很丑
int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);
有更好的方法吗?
编辑:如下图解释
你不需要填充
根据需要更改地图点 X 和 Y 值,您可以在需要的地方调用它!可能在你的 onLocationChanged
里面,比如 changeOffsetCenter(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)));
}
输出:
接受的答案可能是 "animateCamera" 的作品。它使 "shaking of rotations" 几乎看不见。所以使用
更容易
mMap.setPadding(左Px, 上Px, 右Px, 下Px)
和mMap.animateCamera
或两次 mMap.moveCamera(在更换轴承的情况下
第一次 moveCamera 以设备中心旋转,第二次 moveCamera 使用填充使中心正确)
这是一种 hack,而 google 考虑到 setPadding
不修复旋转
Google map v3 beta 似乎修复了它,现在使用填充可以正确移动 pivotX/pivotY 进行旋转
https://developers.google.com/maps/documentation/android-sdk/v3-client-migration
我正在尝试设置用户在地图上的位置,使其位于屏幕底部向上大约 1/3 的位置,当地图旋转时,它会围绕该点旋转。
我最接近的实现方法是使用 setPadding()
方法,但是,这会导致地图在旋转时有点晃动,因为中心点有点 'floats' 左右它实际上应该在哪里。长得很丑
int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);
有更好的方法吗?
编辑:如下图解释
你不需要填充
根据需要更改地图点 X 和 Y 值,您可以在需要的地方调用它!可能在你的 onLocationChanged
里面,比如 changeOffsetCenter(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)));
}
输出:
接受的答案可能是 "animateCamera" 的作品。它使 "shaking of rotations" 几乎看不见。所以使用
更容易mMap.setPadding(左Px, 上Px, 右Px, 下Px)
和mMap.animateCamera 或两次 mMap.moveCamera(在更换轴承的情况下 第一次 moveCamera 以设备中心旋转,第二次 moveCamera 使用填充使中心正确)
这是一种 hack,而 google 考虑到 setPadding
不修复旋转Google map v3 beta 似乎修复了它,现在使用填充可以正确移动 pivotX/pivotY 进行旋转 https://developers.google.com/maps/documentation/android-sdk/v3-client-migration