为MapView设置最小缩放级别

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

GER

Solutions Collecting From Web of "为MapView设置最小缩放级别"

幸运的是,我在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);