5

地図を表示する Android アプリケーションがあります。マップはデフォルトで、ユーザーの移動に合わせてユーザーの位置を中心にしています (中心は位置の更新に従って更新されます)。

ただし、ユーザーがジェスチャーを使用してマップをナビゲートできるようにしたいと考えています。ユーザーがナビゲーションを開始したときに「フォロー」を停止したいのですが、もう一度開始できるようにボタンが表示されます。

ユーザーが地図の中心を移動したことを知るにはどうすればよいですか? GoogleMap.OnCameraChangeListener では、変更が場所の変更によるものなのか、ユーザーの操作によるものなのかわかりません。私は OnCameraChangeListener を使用して一種の実用的なソリューションを持っていますが、それは少し「汚い」ので、あまりいいとは思いません:

map.setOnCameraChangeListener(new GoogleMap.OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition position) {
                            // gpsPosition contains the last position obtained
            if(isFollowing && gpsPosition!=null && (Math.abs(position.target.latitude - gpsPosition.latitude)>0.000001 || Math.abs(position.target.longitude - gpsPosition.longitude)>0.000001) ){
                isFollowing = false;
                map.getUiSettings().setMyLocationButtonEnabled(true);
            }

        }
    }); 

問題に対する素晴らしい解決策はありますか?

4

3 に答える 3