【发布时间】:2011-05-07 23:30:22
【问题描述】:
有没有一种方法可以为我的 MapView 设置最小的缩放级别?当缩放级别设置为 1 时,地图看起来非常难看,因为复制了整个世界地图。
我想阻止该缩放级别。理想情况下,无论用户是通过手势还是缩放控件进行缩放,它都可以工作。
【问题讨论】:
标签: android zooming android-mapview
有没有一种方法可以为我的 MapView 设置最小的缩放级别?当缩放级别设置为 1 时,地图看起来非常难看,因为复制了整个世界地图。
我想阻止该缩放级别。理想情况下,无论用户是通过手势还是缩放控件进行缩放,它都可以工作。
【问题讨论】:
标签: android zooming android-mapview
幸运的是,我的 MapView 中有一个叠加层。否则,我想你将不得不创建一个,只是为了这个小功能:-/。我想知道为什么没有其他方法可以更轻松地做到这一点。
无论如何,您只需要像这样覆盖您的绘制方法:
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
if (mapView.getZoomLevel() < 2)
mapView.getController().setZoom(2);
}
德国
【讨论】:
通过覆盖*draw() 方法类似于ggomeze 的 答案,但在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);
【讨论】: