2

HelloMapView チュートリアルと多くの StackOverflow リソースMapActivityに従って、ピンを使用して実装しました。

私のアプリの目的のために、ズーム レベルを最小値と最大値で制限したいと思います。android:clickable="true"実際、MapView での使用は避けたいと思います。

それを達成する方法が見つかりませんでした。

  • 出来ますか?
  • 誰かがそれを行う方法を知っていますか?
  • onZoomChanged()私が見たことのないようにオーバーライドする組み込み関数はありますか?

AndroidManifest.xml

<uses-sdk
    android:maxSdkVersion="16"
    android:minSdkVersion="7"
    android:targetSdkVersion="15" />

MyMapActivity.java

// Here is my MapView
mMapView = (MapView) findViewById(R.id.game_map);
mMapView.setBuiltInZoomControls(false);
mMapView.setSatellite(true);
mMapController = mMapView.getController();
mMapController.setZoom(CONST_MAP_ZOOM);
mMapController.setCenter(new GeoPoint(48856700, 2351000));
mMapController.animateTo(new GeoPoint(48856700, 2351000));

でも、指を使うと、地球全体が見えるまでズームアウトできます。

私が望むのは、ズームレベルを制限することです。

4

2 に答える 2

1

MapViewにはonSizeChangedがあります

https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/MapView#onSizeChanged(int、int、int、int)を参照してください

おそらく、それをリッスンしてからgetZoomLevel()を呼び出して、許容範囲内にあるかどうかを確認し、そこから変更することができます。

または、さらに良いことに、onDrawをオーバーライドして、常にそこでチェックすることができます。 MapViewの最小ズームレベルを設定します

于 2012-07-27T19:51:26.987 に答える
0

私は逃げ道を見つけました。

MapViewでマルチタッチを無効にします。

<com.google.android.maps.MapView
    android:id="@+id/game_map"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:apiKey="@string/google_maps_api_key"
    android:clickable="true" />

次に、ズームコントロールを非表示にします。

mMapView = (MapView) findViewById(R.id.game_map);
mMapView.setBuiltInZoomControls(false);

次に、独自のズームコントロールを実装します。

于 2012-07-29T21:54:47.813 に答える