Android 安卓谷歌地图v2没有';t滑动/捏动时平移/缩放

Android 安卓谷歌地图v2没有';t滑动/捏动时平移/缩放,android,swipe,google-maps-api-2,pinchzoom,Android,Swipe,Google Maps Api 2,Pinchzoom,我有一个框架布局中的地图v2。如果我不从代码中设置动画,它会以通常的方式响应触摸/滑动/挤压事件。如果我在onLocationChanged()调用后设置它的动画,相机会移动和缩放,但随后贴图会停止响应用户输入(或者至少是这种感觉)。你刷卡,但地图无法平移。你捏了捏,但地图不会缩放。你点击。。。你明白了 然而,我偶然发现有些事情正在发生,但由于某种原因,它并没有被显示出来。例如,如果我刷卡,地图不会移动,但会以某种方式记录刷卡。如果我按下home(主页)按钮,系统将返回主屏幕,然后将应用程序再次

我有一个框架布局中的地图v2。如果我不从代码中设置动画,它会以通常的方式响应触摸/滑动/挤压事件。如果我在onLocationChanged()调用后设置它的动画,相机会移动和缩放,但随后贴图会停止响应用户输入(或者至少是这种感觉)。你刷卡,但地图无法平移。你捏了捏,但地图不会缩放。你点击。。。你明白了

然而,我偶然发现有些事情正在发生,但由于某种原因,它并没有被显示出来。例如,如果我刷卡,地图不会移动,但会以某种方式记录刷卡。如果我按下home(主页)按钮,系统将返回主屏幕,然后将应用程序再次带到前台,我可以在平移位置看到我的地图,并尽可能进行最大的缩放,而不需要我之前添加的任何标记。似乎滑动手势被以lat=0、lng=0为中心的重叠不可见地图捕捉并应用于该地图,现在似乎该地图就是正在显示的地图

除此之外,使用各种断点,很明显在我的活动中没有创建任何其他映射,更不用说透明和覆盖的映射了。。。我的描述只是为了让你了解发生了什么,我并不是说在我的上面还有另一张地图

以下是相关代码,如果您需要更多,请询问:

我的onCreate()

我的onStart()是:

我的onLocationChanged()是


请注意,我将贴图配置推迟到第一个onLocationChanged()事件,因为否则贴图拒绝将动画设置到请求的位置(请参阅我的另一个问题:)。

您似乎正在向布局中添加两个
SupportMapFragment
s。用户看到的不是与之交互的用户。确保只添加一个片段。

map\u activity.xml的内容是什么??您的意思是mapFragment=SupportMapFragment.newInstance()执行了两次吗?如果是这样的话,我肯定不是这样,在那里设置一个断点,它只会停止一次。你就是那个人!!!当然,我只执行了一次mapFragment=SupportMapFragment.newInstance(),但那太频繁了!我已经用xml声明了这个片段…@LucioCrusca这就是为什么我要求map_活动布局。我想我已经知道了。
@Override
protected void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);

  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
      WindowManager.LayoutParams.FLAG_FULLSCREEN);

  setContentView(R.layout.map_activity);

}
@Override
protected void onStart()
{
  super.onStart();

  // Create the LocationRequest object
  mLocationRequest = LocationRequest.create();
  // Use high accuracy
  mLocationRequest.setPriority(
        LocationRequest.PRIORITY_HIGH_ACCURACY);
  // Set the update interval to 5 seconds
  mLocationRequest.setInterval(UPDATE_INTERVAL);
  // Set the fastest update interval to 1 second
  mLocationRequest.setFastestInterval(FASTEST_INTERVAL);

   mLocationClient = new LocationClient(this, this, this);
   mLocationClient.connect();
}

@Override
public void onConnected(Bundle arg0)
{
  mLocationClient.requestLocationUpdates(mLocationRequest, this);  
}
@Override
public void onLocationChanged(Location loc)
{
  if (mMap == null)
  {
    mapFragment = SupportMapFragment.newInstance();
    FragmentTransaction fragmentTransaction = getSupportFragmentManager()
        .beginTransaction();
    fragmentTransaction.add(R.id.mapcontainer, mapFragment);
    fragmentTransaction.commit();

    mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    mMap.getUiSettings().setAllGesturesEnabled(true);
    mMap.getUiSettings().setMyLocationButtonEnabled(true);
    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setCompassEnabled(true);
    mMap.setMyLocationEnabled(false);

    LatLng location = new LatLng(loc.getLatitude(), loc.getLongitude());
    CameraPosition pos = new CameraPosition.Builder().target(location).zoom(12).build();
    CameraUpdate cu = CameraUpdateFactory.newCameraPosition(pos);
    mMap.animateCamera(cu);

    if (mLocationClient.isConnected())
      mLocationClient.removeLocationUpdates(this);
    mLocationClient.disconnect();

    Log.e(getClass().getSimpleName(), "lat = " + location.latitude + " long = " + location.longitude);
  }
}