2

根据HelloMapView 教程和许多 StackOverflow 资源,我在其上实现了一个MapActivity带有 Pins 的功能。

出于我的应用程序的目的,我想限制缩放级别的最小值和最大值。事实上,我想避免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 回答