有没有一种方法只能使用Android中的GoogleMaps API来监听声像?

时间:2019-09-30 15:20:22

标签: android google-maps kotlin

当用户在我的应用程序中平移地图时,我需要执行一些代码,包括平移开始,拖动和结束时。 我已经看过GoogleMap.OnCameraMoveStartedListener.REASON_GESTURElink)了,但是REASON_GESTURE不仅适用于平移,而且适用于缩放和旋转,并且我不想在其中执行代码两种情况。

是否有办法进一步缩小只能平移的原因?如果不是,您是否知道有什么变通办法可以仅在地图内侦听平移,并具有不同的平移开始,拖动和结束代码?

googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
        @Override
        public void onCameraMoveStarted(int reason) {
            if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE) {
                //map is touched..do something
            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您可以在每个触发器上保留CameraPosition。然后使用比较来决定是否执行代码。

googleMap.setOnCameraMoveStartedListener(new GoogleMap.OnCameraMoveStartedListener() {
        @Override
        public void onCameraMoveStarted(int reason) {
            CameraPosition newPosition = googleMap.getCameraPosition();
            if (reason == GoogleMap.OnCameraMoveStartedListener.REASON_GESTURE
                    && oldPosition != null
                    && oldPosition.tilt == newPosition.tilt
                    && oldPosition.zoom == newPosition.zoom
                    && oldPosition.bearing == newPosition.bearing) {
                // map is panned..do something
            }
            oldPosition = newPosition;
        }
    });