gpt4 book ai didi

java - 安卓谷歌地图 : Combine scrollBy with zoomBy for simultaneous pan & zoom

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:37:27 25 4
gpt4 key购买 nike

我想同时缩放和滚动 GoogleMap 对象。不幸的是,如果我只是进行两次 moveCamera 调用(一个接一个),似乎只有第二次调用会生效。

另一种方法是传递 CameraPosition,但不幸的是,CameraPosition 构造函数似乎没有采用处理滚动量的参数(这是缩放级别不变),但只是关于去往哪个纬度/经度的参数。

是否有一些聪明的方法来组合/连接 CameraUpdate 对象,这样我就可以发出一个同时执行平移和缩放的 moveCamera 命令?

我认为这样的事情是可能的,因为您可以在触摸 map 时做到这一点。您放下两根手指,张开手指可以放大/缩小,同时移动两根手指可以平移。

最佳答案

看起来您最好的选择是修改调用 GoogleMap.getCameraPosition() 时返回的 CameraPosition 对象。但是,您不能仅将 CameraPosition 对象的纬度和经度增加滚动的像素数。您必须获取 CameraPosition 的 LatLng 坐标,使用 Projection 类将其转换为 Point 对象,修改 指向,然后将其转换回LatLng 对象。

例如:

GoogleMap map; // This is your GoogleMap object
int dx; // X distance scrolled
int dy; // Y distance scrolled
float dz; // Change in zoom level
float originalZoom;

CameraPosition position = map.getCameraPosition();
Project projection = map.getProjection();

LatLng mapTarget = position.target;
originalZoom = position.zoom;

Point mapPoint = projection.toScreenLocation(mapTarget);
mapPoint.x += dx;
mapPoint.y += dy;
mapTarget = projection.fromScreenLocation(mapPoint);

CameraPosition newPosition = new CameraPosition(position)
.target(mapTarget)
.zoom(originalZoom+dz)
.build();

map.moveCamera(CameraUpdateFactory.newCameraPosition(newPosition));

关于java - 安卓谷歌地图 : Combine scrollBy with zoomBy for simultaneous pan & zoom,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21912182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com