地図を表示する 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);
}
}
});
問題に対する素晴らしい解決策はありますか?