为MapView设置最小缩放级别

有没有一种方法可以为我的MapView设置最低zoon级别? 我不知道如果你已经意识到,当缩放级别为1时,地图看上去真的很难看。 你看到整个世界地图复制。 无论用户是通过手势还是缩放控件放大,我都想避免缩放级别。 我看了不同的select,但似乎没有工作。 有人对此有个好主意吗?

GER

  • 单击WebView中的表单域时禁用缩放?
  • 在WebView中禁用缩放缩放?
  • 使用ViewPager实现缩放缩放
  • Android画廊与捏缩放
  • 幸运的是,我在MapView中覆盖了一层。 否则,我想你将不得不创build一个,只是为了这个小function: – /。 我想知道为什么没有任何其他的方式来做这个更容易。

    无论如何,你只需要重写你的绘制方法是这样的:

    @Override public void draw(Canvas canvas, MapView mapView, boolean shadow) { super.draw(canvas, mapView, shadow); if (mapView.getZoomLevel() < 2) mapView.getController().setZoom(2); } 

    GER

    类似ggomeze的答案,通过重写*draw()方法,但是最好在MapView重写dispatchDraw() 。 这样,您可以阻止瓷砖空白处的缩放级别的绘制。

    另外请注意,在这一点上,如果您正在使用触摸手势进行缩放,则将地图居中放置在中心位置,这样可以使地图每次都从中心移开(这使得MapView看起来更加狡猾) !)。

     @Override public void dispatchDraw(Canvas canvas) { //limit zoom level if(getZoomLevel() == 1){ getController().setZoom(2); getController().setCenter(new GeoPoint(0, 0)); //dont draw as it will just be blank and then jump return; } super.dispatchDraw(canvas); } 

    这可以通过在手势发生的同时跟踪缩放级别来改善,因此用户在手势操作时不能看到部分缩放到被阻挡的最低缩放级别(1),但是我想上面的情况适合大多数并且是很多更轻松!

    只需编写onCreate以下代码:

     MapController myMC myMapView.getController(); myMC.setZoom(int value);