2015-02-23 73 views
4

我正在开发一个使用谷歌地图显示您的位置的应用程序。我想旋转用户位置周围的地图。我使用getOrientation(R,方向)(并调整为真正的北)来获得设备旋转工作正常,但我希望用户位置靠近屏幕的底部。我已将地图上的填充设置为屏幕高度的四分之一 mMap.setPadding(0,screenHeight/4,0,0); 我注意到的是旋转仍在围绕屏幕中心而不是填充中心的点处完成。 这是代码我使用的onSensorChanged谷歌地图安卓V2围绕用户旋转填充

currentZoom = mMap.getCameraPosition().zoom; 
CameraPosition currentPlace = new CameraPosition.Builder() 
           .target(new LatLng(currentNode.getLatitude(), currentNode.getLongitude())) 
           .bearing(degrees).tilt(60).zoom(currentZoom).build(); 
mMap.stopAnimation(); 
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(currentPlace),40,null); 

有没有办法来改变摄像机旋转锚点?

+0

尽量让你的'tilt'为'65.5f'和'zoom'到'18f',了解更多详情,请参考[这里](HTTP:// stackoverflow.com/questions/14767282/android-maps-v2-rotate-mapview-with-compass),[here](http://stackoverflow.com/questions/1830391/rotate-mapview-in-android)和[here ](http://stackoverflow.com/questions/26303370/rotate-map-according-current-walk-direction-android-google-maps)。 – bjiang 2015-02-23 19:00:39

+0

谢谢bjiang,但是旋转本身不是问题,我已经设置了方向并将其调整为真北,并且在旋转时没有填充时它工作正常。问题是,当我向地图添加填充时,旋转似乎基于屏幕中心进行应用,导致用户位置发生偏移,从而导致整个地图在地图修复时偏移几个像素。 – Colm 2015-02-23 20:09:18

+0

你解决了这个问题吗? – oshurmamadov 2016-09-26 11:40:42

回答

0

我试图解决这个问题几个小时。我发现的唯一解决方案不是很好,但它的工作原理如下: 例如,如果要将用户移动到中心以下200dp:

1)将地图碎片高度设置为其高度+ 200dp(然后地图将去屏幕下方200dp)

2)这工作正常,但它隐藏了Google徽标。要保留Google徽标,请将地图填充顶部和底部设置为200dp。

mGoogleMap.setPadding(0, dp2px(200),0 , dp2px(200)); 

解决该问题