2

ユーザーがGoogleマップの特定のエリアの外に移動できないようにしようとしています。ただし、これを行う簡単な方法はないようです。ここで質問するのは初めてなので、ご容赦ください。

ユーザーがスクロールするときにポーリングするために以下を試しましたが、問題は OnCameraChange が十分に頻繁に起動しないため、ぎくしゃくして不正確に動作することです。シンプルで不可欠な機能のように見えるので、これを行う方法があるに違いないことはわかっています。

private static final LatLng NEBOUND = new LatLng(47.670606, -117.393344);
private static final LatLng SWBOUND = new LatLng(47.661283, -117.411052);
private static final LatLngBounds MAPBOUNDARY = new LatLngBounds(SWBOUND, NEBOUND);
private LatLng lastCenter = new LatLng(47.667454, -117.402309);

  private final OnCameraChangeListener mOnCameraChangeListener = 
            new OnCameraChangeListener() {
        @Override
        public void onCameraChange(CameraPosition cameraPosition) {
            LatLngBounds visibleBounds = guMap.getProjection().getVisibleRegion().latLngBounds;
            if(!MAPBOUNDARY.contains(visibleBounds.northeast) || !MAPBOUNDARY.contains(visibleBounds.southwest)){
                guMap.moveCamera(CameraUpdateFactory.newLatLng(lastCenter));
            }
            else
                lastCenter = guMap.getCameraPosition().target;
            centerLoc.setText(lastCenter.toString());
        }
    };
4

2 に答える 2

0

新しい光沢のあるプッシュ テクノロジ ( ) を使用する代わりに、onCameraChange古いポーリング テクノロジ ( ) を使用してみてくださいmap.getCameraPosition()

Handler基本的に、カメラ位置の値を取得する が必要で、 handleMessage10ms ごとにこのハンドラーにメッセージを送信します。内側handleMessageにしますsendEmptyMessageDelayed

Runnableの代わりに使用することもできますMessage(ただし、それは好みの問題です)。

于 2013-04-29T22:29:32.217 に答える