2010-11-10 137 views
9

有没有办法可以为我的MapView设置最小zoon级别?我不知道当缩放级别为1时,地图看起来真的很难看。你看到复制了整个世界地图。无论用户是通过手势还是缩放控件放大,我都希望避免缩放级别。我看过不同的选择,但似乎没有工作。有人对此有个好主意吗?设置MapView的最小缩放级别

GER

回答

17

幸运的是,我有我的MapView覆盖。否则,我想你将不得不创建一个,只是为了这个小功能: - /。我想知道为什么没有其他方法可以更简单地做到这一点。

不管怎么说,你只需要重写你的画法是这样的:

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

GER

-4

只是写的onCreate下面的代码:

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

感谢您的快速回答。但是,这不是我的问题的解决方案。使用该代码,您只需设置初始缩放级别即可。但是,这并不能避免用户可以缩小,并有缩放级别等于1(两个非洲,两个美洲)的丑陋地图视图 – ggomeze 2010-11-10 16:55:53

+0

如果你不只是寻找标准选项,设置限制手册:) – polyakovsky 2010-11-10 18:47:30

+0

为什么你是限制用户可以做什么?如果他们想看到整个世界呢? – Falmarri 2010-11-10 19:23:40

3

类似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),而手势来改善,但我想象以上的情况下将适合大多数,并且更容易!

相关问题