0

まず、この質問は私のネイティブ Android アプリケーションの Map v2 API に関するものです。次に、Map v2 API でパンの変更を検出する方法に関する多数の stackOverflow の投稿を見てきました (例: How to handle onTouch event for map in Google Map API v2? ) 。私の要件を考えるとやり過ぎです。

これが私が達成しようとしていることです...

ユーザーがマップの元のカメラ位置 (ズームまたはパン) を変更したかどうかを検出し、変更した場合はマップにリセット ボタンを表示して、ユーザーがリセット ボタンをタップするだけでマップを元の位置に簡単にリセットできるようにします。

これが私のアプローチです.....

これを達成するために、「OnCameraChangeListener getCameraChangeListener()」コールバックを使用し、(onCameraChange(CameraPosition position) を介して) 渡されたカメラ位置がレンダリングされたマップの「元の」カメラ位置と異なるかどうかを on コールバックでテストします。異なる場合は、ユーザーが地図を元の位置に戻せるように、リセット ボタンを表示します。

これが私が遭遇している問題です....

「onCameraChange」コールバックがマップ画像を「元の」位置にリセットすることに応答して呼び出された場合(「リセット」ボタンを介して)、「onCameraChange」コールバックを介して渡されたカメラの「位置」を除いて、すべてが期待どおりに機能します。マップが適切にリセットされていても、「元の」マップ位置と一致しません (予想どおり)。

コールバックを介して渡されたカメラの位置が「元の」位置と一致しない場合、リセットボタンが表示されるため、これは私にとって問題を引き起こします。しかし、これでマップを元の位置に正常にリセットしたため、リセットボタンを表示したくなくなりました...したがって、私の問題です。

ここであなたの助けが必要です....

  • ここで何が欠けていますか?上で述べたように、最後のコールバックで (onCameraChange を介して) 返されたマップの「位置」が「元の」カメラ位置と一致することを期待していました...結局、「元の」マップ位置へのリセットがそれを引き起こしたものです最後の onCameraChange コールバック。

よろしく。

4

2 に答える 2

0

GMaps が onCameraChange に渡す前に Double から float に LatLng 値をキャストしているため、精度が失われているようです。

これは私の場合に機能します:

            public boolean equals(LatLng original, LatLng target) {
                return ((float) original.latitude == (float) target.latitude 
                    || (float) original.longitude == (float) target.longitude);
            }
于 2015-02-26T13:57:29.383 に答える