Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改谷歌地图偏移中心_Android_Google Maps_Offset - Fatal编程技术网

Android 更改谷歌地图偏移中心

Android 更改谷歌地图偏移中心,android,google-maps,offset,Android,Google Maps,Offset,我试图在地图上设置用户位置,使其位于屏幕底部上方约1/3的位置,当地图旋转时,它将围绕该点旋转 我最接近于实现这一点的方法是使用setPadding()方法,但是,这会导致贴图在旋转时发生某种抖动,因为中心点在其实际位置周围“浮动”。它看起来很难看 int mapHeight = mapView.getHeight(); googleMap.setPadding(0, mapHeight / 5, 0, 0); 有更好的方法吗 编辑:如下图所示 你不需要填充物 根据需要更改映射点X和Y的值。您

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

我最接近于实现这一点的方法是使用
setPadding()
方法,但是,这会导致贴图在旋转时发生某种抖动,因为中心点在其实际位置周围“浮动”。它看起来很难看

int mapHeight = mapView.getHeight();
googleMap.setPadding(0, mapHeight / 5, 0, 0);
有更好的方法吗

编辑:如下图所示


你不需要填充物

根据需要更改映射点X和Y的值。您可以在需要的地方调用该值!可能在您的
onLocationChanged
内,如
changeOffsetCenter(location.getLatitude(),location.getLatitude())

输出:


公认的答案可能是“animateCamera”的作品。它使“旋转的震动”几乎看不见。所以更容易使用

mMap.设置填充(左px、上px、右px、下px)

用mMap.animateCamera 或两次移动摄像头(在更换轴承的情况下 第1次移动相机随设备中心旋转,第2次移动相机使用填充物使中心正确)


这是一种黑客行为,虽然谷歌不修复旋转,但考虑到setPadding,谷歌地图v3测试版似乎可以修复它,使用padding现在可以正确地移动pivotX/pivotyforrotation

也许这对你有帮助:我不知道这个答案如何让我将用户的位置锁定在地图中心以外的位置。你能解释一下你想做什么吗?也许是图像…@ZeroOne你的问题不清楚,请详细说明?你可以有一个中心点,这就是你要问的吗?基本上,对于多个标记,如何将它们重新定位在地图底部?朋友,这个答案是针对一个中心点,而不是中心点,你可以通过选择底部的一个主标记,使用法则缩放级别(cam没有缩放)或者使用一个解决方案,比如在一些位置之间取中心点(LatLng),并将其作为中心位置。检查此选项可能会有帮助>找到一个位置与此答案无关,但可以根据需要移动中心点(使用x,y)就是我在这里提到的:)我更喜欢这样:mMap.setPadding(leftPx,topPx,rightPx,bottomPx);>>您可以使用
Point.offset(xoffset,yOffset)
为点添加偏移,而不是使用
Point.set()
来设置新值
 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)));
        }