Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 地图视图-禁用四处拖动,但允许缩放_Android_Android Mapview - Fatal编程技术网

Android 地图视图-禁用四处拖动,但允许缩放

Android 地图视图-禁用四处拖动,但允许缩放,android,android-mapview,Android,Android Mapview,我有一个内部有3个片段的ViewPager,在外部的右侧,我想显示一个地图视图-到目前为止运行良好。但我想禁用拖动,但仍然允许用户放大/缩小-具有固定的中心。如果允许用户拖动地图,则会破坏viewpager的滚动功能。 尝试禁用clickable+focusable,但-当然-不再缩放 在stackoverflow上查看了其他问题,但到目前为止,没有一个问题提供了有效的解决方案 谢谢 忽略我到目前为止所说的一切(这就是为什么我编辑了我的答案),而是在MapActivity类中使用以下代码(它工作

我有一个内部有3个片段的ViewPager,在外部的右侧,我想显示一个地图视图-到目前为止运行良好。但我想禁用拖动,但仍然允许用户放大/缩小-具有固定的中心。如果允许用户拖动地图,则会破坏viewpager的滚动功能。 尝试禁用clickable+focusable,但-当然-不再缩放

在stackoverflow上查看了其他问题,但到目前为止,没有一个问题提供了有效的解决方案


谢谢

忽略我到目前为止所说的一切(这就是为什么我编辑了我的答案),而是在MapActivity类中使用以下代码(它工作得很好,只是尝试了一下!):


如果您
设置可点击(false)
并添加缩放控件,则此选项不起作用?发布代码。您必须禁用postTranslate,因为我的代码不会给我们带来任何进一步的影响,因为它只是片段中的一个映射视图。如果我禁用可点击并添加缩放控件,如果有人有硬件按钮并聚焦地图,然后使用键盘或其他东西移动,它将如何表现?除此之外,我真的很想用一个固定的中心点来进行缩放。。缩放控件将是最后的选择,但收缩到缩放效果要好得多。我想我已经扩展了MapView类并覆盖了computeScroll()方法,如这里所述。您能给我一个示例说明如何做到这一点吗?我想,如果我覆盖dispatchDraw,并且只有当它是同一个中心时才“调用super”时,收缩到缩放将无法正常工作,因为在收缩时,你也经常“拖动”它,所以每次有两个指针时,我都需要覆盖触控内容“将中心重置到我的中心”,还是我的想法太复杂了?请检查我对我的答案所做的编辑,这段代码非常有效!
final GeoPoint point = new GeoPoint(latitudeE6, longitudeE6);
final MapController mapController = mapView.getController();

mapController.animateTo(point);
mapController.setZoom(6);

mapView.setOnTouchListener(new View.OnTouchListener() {

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
  if(arg1.getAction() ==  MotionEvent.ACTION_UP)
  {
    mapController.setCenter(point);
    return true;
  }
  if(arg1.getPointerCount() > 1)
  {
   mapController.setCenter(point);
   return false;
  }
  else
  {
   return true;
  }
 } 
 });